跳到主内容
UniKit

XML 格式化与压缩

美化或压缩 XML:可选 2/4 空格与 Tab 缩进、属性换行、去注释;保留 XML 声明、DOCTYPE、注释与 CDATA,非法 XML 报错时给出准确行列位置,并统计节点与属性数量。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

输出

输入 XML 后即可看到结果

统计

输入 XML 后即可看到结果

这个工具能做什么

  • 拿到压缩成一行的接口响应、日志或配置文件时,先格式化缩进,再逐层看结构,比在编辑器里手动换行快得多。
  • 上线的报文要尽量小:用压缩模式去掉标签之间的空白与注释,同时能看到压缩前后的 UTF-8 字节数。
  • 排查「标签没闭合」这类报错:解析器会指出具体行列与原因(不匹配的标签、重复属性、多个根元素等),不用靠肉眼数括号。
  • 提交 XML 前统计元素数、属性数、注释数、CDATA 数与最大嵌套深度,快速判断文件复杂度。

示例

输入

<user id="1"><name>Ada</name><tags><tag>go</tag><tag>xml</tag></tags></user>

输出

<user id="1">
  <name>Ada</name>
  <tags>
    <tag>go</tag>
    <tag>xml</tag>
  </tags>
</user>

默认「格式化」+ 2 空格缩进的结果。切到「压缩」会得到原来那一行;统计面板显示元素 5、属性 1、最大深度 3。

常见问题

格式化会改变文档内容吗?

不会改变数据,但会重排排版:标签之间的空白文本节点会被丢掉,只有纯文本或纯 CDATA 子节点(例如 <name>Ada</name>)会保留在一行内,属性值里的空格、引号风格、实体引用都原样保留。

为什么我的 XML 报错说「多个根元素」?

XML 只允许一个根元素。把两个顶层标签(或多个并列的片段)包一层 <root> 即可。工具同时会检查标签是否匹配、属性是否重复、标签名是否合法、注释与 CDATA 是否闭合,并给出出错的行列。

支持 DOCTYPE、注释和 CDATA 吗?

都支持。DOCTYPE(含内部子集 [ ])、<?xml ... ?> 之类的处理指令、<!-- 注释 --> 与 <![CDATA[ ]]> 都能解析并原样输出;压缩模式可以选择一并删掉注释。

实体引用会被展开吗?

不会。&amp; &lt; &#65; 这类实体原样保留,因为格式化只处理排版,不应该改动文本语义。需要展开实体请用 XML 转 JSON 工具,那边会做解码。

大文件会不会卡?

解析是自己实现的 tokenizer,没有 DOM 也没有第三方库,几十万字符量级通常没问题;不过格式化的输出是整段字符串,超大文件建议先在编辑器里截取片段再处理。所有处理都在浏览器本地完成,不会上传。

关键词:xmlxml 格式化xml formatter美化压缩minifypretty printcdataxml 在线格式化

同类工具