XML 一行太难读?格式化、压缩和报错检查这样用
接口响应、配置片段或导出的 XML 经常挤在一行里。要找某个节点属于谁、少了哪个结束标签,可以先放进宝塔拨测的 XML 格式化工具,把层级展开再看。需要重新贴回只接受紧凑文本的位置时,再用“压缩”去掉工具生成的排版换行。
这两个按钮都作用于同一个编辑框。操作前先留一份原文,尤其是准备覆盖配置文件时,方便比较处理前后的差别。
先把层级展开
在工具列表选择“XML格式化”,用下面这段虚构数据替换编辑框中的默认示例:
<catalog><item id="demo-01"><name>演示 & 测试</name><enabled>true</enabled></item><item id="demo-02"><name>备用</name></item></catalog>
点击“校验 / 格式化”。本次结果把两个 item 分别展开,name 和 enabled 缩进到对应的 item 下面,左侧行号也随之更新。这样查第二个商品名称时,就能先定位 id="demo-02",不用在长行里逐个数标签。

本次输入没有 XML 声明,处理后开头补出了 <?xml version="1.0" encoding="UTF-8"?>。因此它输出的是重新排版后的 XML 文本,不能把这次操作理解为“只改了空格,其他字符绝对不变”。如果下游系统对声明有特别要求,复制前要一起核对。
示例名称里的 & 仍以转义形式保留。XML 文本中想表示普通的 &,应按语法写成 &;不要因为看到页面显示了这几个字符,就手动把它改回裸 &。
压缩后看的是文本行,不是网络压缩包
在格式化结果上继续点击“压缩”,节点之间的排版换行被去掉,XML 声明与根节点也连在同一行。编辑框宽度不够时可能视觉折行,但这不代表文本里重新插入了换行。

这里的“压缩”得到的仍是 XML 字符串,不是 ZIP 文件,也不是 HTTP 传输里的 gzip。它适合把排版用的空白收紧,不能据此判断服务器的传输压缩是否开启。
对于这份商品数据,整理前后容易逐项比较:两个 id、两段名称以及 enabled 都还在。涉及文章段落、混合文本或刻意保留空白的内容时,应另存结果再比较,别直接覆盖原文。能成功处理一份普通节点示例,并不表示所有 XML 文档的空白都可随意移除。
报错时先修标签,再重新格式化
把输入换成下面这段故意缺少 </item> 的文本:
<catalog><item>演示</catalog>
点击“校验 / 格式化”,编辑框下方出现红色解析错误,本次提示包含 Unexpected closing tag: catalog != item。它表示解析到 </catalog> 时,当前等待关闭的还是 item。

修正方法是在“演示”后补上 </item>,让内层先结束,再结束 catalog,然后重新点击按钮。若提示行号和列号,先看附近的开始标签与结束标签是否配对、是否交叉,再检查引号和转义字符。错误可能由更前面的缺口引起,不必只盯着提示位置的单个字符。
这一步检查的是 XML 能否按语法解析。本工具没有让读者上传 XSD、DTD 或业务规则的操作;格式化完成不能证明接口字段齐全、字段类型符合约定,更不能证明这份配置导入后会生效。准备交给业务系统使用时,还应按该系统的字段要求核对。