XML 格式化

XML 格式化是把压成一行、缩进混乱的 XML 按嵌套层级重排成统一缩进的在线工具。粘贴 XML 或拖入 .xml、.svg、.rss 即可一键美化,XML 缩进可选 2 空格、4 空格或 Tab,也能压缩成单行。排版前先做良构校验,标签未闭合或交叉会指出第几行第几列。它只重排节点之间的空白,注释、CDATA、声明、DOCTYPE 与属性原样保留,混合内容整段不动,XML 不上传、免费无需注册。

拖入 .xml / .svg / .rss 文件,点击选择
XML 不上传 · 浏览器本地处理 · 单文件 ≤ 2MB · 也可直接粘贴文本

🔒 XML 在你的浏览器内处理,未上传任何服务器;只重排节点之间的空白,不改标签、属性与文本内容。

如何使用XML 格式化

1

在上方文本框粘贴 XML,或把 .xml / .svg / .rss / .xsl 文件拖入(浏览器本地处理、XML 不上传),也可以点「填入示例」先看效果。

2

默认就是 2 空格美化,无需配置;按需切换缩进宽度、换行符,或勾选是否保留注释与 XML 声明、是否把空元素写成自闭合;点「压缩单行」即可反向压缩。

3

结果实时刷新,统计条给出行数、字符数、元素个数、最大嵌套深度与耗时;点「复制」或「下载 .xml」保存,也可「结果送回输入」继续处理。

关于XML 格式化的常见问题

XML 格式化会上传我的 XML 文件吗?安全吗?
不会。XML 格式化全程在你的浏览器本地完成,XML 内容不会上传到任何服务器,关闭页面即清除,处理含接口报文、密钥配置、客户信息的 XML 也放心(页面只加载站点访问统计脚本,它不读取、也不上报你粘贴的 XML)。工具也不解析外部实体(不发起任何网络或文件读取),从根上避开 XXE 风险,遇到 DOCTYPE 内部实体递归的 XML 炸弹会在排版前直接拦截。
手机上能用 XML 格式化在线工具吗?
可以。本 XML 格式化在线工具是纯网页实现,手机、平板、电脑浏览器打开即用,无需安装软件,也无需注册登录。手机上做 XML 排版和电脑上是同一套结果,结果区支持横向滚动,长行不会被折断,缩进层级在小屏上照样看得清;参数区在窄屏会自动堆叠,不会撑出横向滚动条。
XML 格式化会把注释和 CDATA 弄丢吗?
不会。注释、CDATA、XML 声明、处理指令、DOCTYPE(含方括号内的内部子集)、实体引用、命名空间前缀与 xmlns 属性都原样保留,连单引号属性也不会被统一改成双引号。XML 格式化只重排节点之间的空白,唯一会被丢弃的是纯空白文本节点,例如只有空格换行的空元素会折叠成一对空标签。
XML 格式化和 XML 压缩有什么区别?
XML 格式化(美化)是加缩进和换行让层级结构一眼看清,便于阅读、排查和 diff;XML 压缩(minify)则相反,去掉标签之间的纯空白文本节点与多余换行,压成紧凑单行,便于塞进代码字符串、配置项或减小传输体积。两种模式一键切换,都不改标签、属性和文本内容,压缩后再美化能还原成规范排版。
XML 格式化缩进用 2 个还是 4 个空格?
看团队约定,没有唯一标准:Java 系的 pom.xml、web.xml 与 Android 布局多写 4 空格,SVG、RSS 与前端配置片段多写 2 空格,Tab 则常见于跟随编辑器设置的老项目。XML 格式化的缩进只影响标签之间的空白,不改标签、属性和文本——上面那段订单响应用 2 空格是 287 字符、4 空格是 309 字符、Tab 是 276 字符,都是同样的 12 行。工具默认 2 空格,切换后即时重排,这个偏好只记在你本机浏览器里,下次打开还是你上次选的那一档。
XML 格式化能顺便检查 XML 语法错误吗?
会,它顺带就是一个 XML 语法检查在线工具。排版前先做良构(well-formed)校验,未闭合标签、标签交叉嵌套、属性重复、属性没写值、标签外的裸文本都会被拦下,并给出第几行第几列的中文提示,例如「第 3 行第 1 列:这里应该闭合标签 b」。但这层 XML 校验只查良构、不查有效性,不做 DTD 或 XSD Schema 校验,也不校验业务字段约束。
XML 格式化最大支持多大的 XML 文件?
XML 文件格式化单次约 2MB,按 UTF-8 字节数计算,常见的接口响应、pom.xml、web.xml、AndroidManifest.xml、SVG 和 RSS 都够用,几百 KB 的文件毫秒级完成。超过上限会直接提示并拦截,避免浏览器主线程卡死;更大的文件建议先按模块拆分再格式化。整个过程完全免费、无需注册,结果也不会加水印。
XML 格式化会改坏混合内容里的文本吗?
不会,这正是本工具刻意做的取舍。像 <p>前<b>粗</b>后</p> 这种文本和子元素混在一起的混合内容,很多在线 XML 格式化工具会把它拆成多行并加缩进,等于给文本节点凭空塞进换行和空格、把内容改掉;本工具会把这类元素从开标签到闭标签整段原样输出,宁可少排版也不动一个字符,xml:space="preserve" 的元素同样整棵子树原样保留。
XML 格式化在线工具免费吗?需要注册吗?
免费,也不用注册。XML 格式化、压缩与下载 .xml 全部由你本机的浏览器完成,站方没有服务器转换成本,所以不限次数、不加水印、没有会员额度。XML 在线格式化还不用装软件,打开网页就是完整功能;想验证 XML 格式化不上传,页面打开后断网再格式化一次,照样出结果。
XML 格式化后中文乱码是怎么回事?
多半是文件不是 UTF-8 编码。工具按 UTF-8 读取拖入的 .xml,如果它是 GBK / GB2312 存的(声明里往往写着 encoding="GB2312"),读进来就已经是乱码,XML 格式化只会把乱码原样排版。解法是先用编辑器另存为 UTF-8 再拖进来,或直接粘贴文本。工具不改写声明里的 encoding,也不替你转码;输入带 UTF-8 BOM 时会提示并原样保留在输出开头。
XML 格式化支持只有一段的 XML 片段吗?
支持。默认开启「允许多根片段」,直接粘贴接口响应里截下来的一段、含多个并列根元素的内容也能格式化,工具不会给你注入任何合成根元素。如果你要求这份内容必须是合法单根文档,关掉这个开关即可,届时多个根元素或根元素之外的多余文本都会被明确报错。

XML 格式化到底会改动哪些东西

XML 代码格式化只重写节点之间的空白,下面这张保真对照表就是本工具的完整承诺:左列全部原样保留, 唯一会变的是纯空白文本节点。

XML 格式化的保真边界:哪些原样保留、哪些会被改动(唯一会丢的是纯空白文本节点)
XML 里的内容美化时压缩时
注释 <!-- -->原样保留,独立成行可选保留或去掉
CDATA 段整块原样,内部一个字符不动整块原样
<?xml ?> 声明与处理指令原样保留,不补写不改 encoding可选保留或去掉
DOCTYPE(含内部子集)整块原样透传,不重排整块原样透传
属性顺序、引号与命名空间原样,不重排不改引号原样,不折叠标签内空白
实体引用 &amp; &#20013;原样,不做解引用往返原样
混合内容与 xml:space="preserve"整段原样,不插入缩进整段原样
纯空白文本节点丢弃(唯一会丢的空白)丢弃

XML 格式化前后对比示例:一份订单接口响应

页面里「填入示例」用的就是下面这段压成一行的接口响应,它一次踩满了注释、命名空间、 单引号属性、CDATA 与混合内容五个容易被改坏的点:

<?xml version="1.0" encoding="UTF-8"?><!-- 订单接口响应 --><order id="A-1024" xmlns:x="urn:deer"><customer name='小鹿'/><items><item sku="D-01" qty="2">鹿角挂钩</item><item sku="D-02" qty="1"><![CDATA[限量 & 礼盒]]></item></items><note><p>已<b>加急</b>发货</p></note></order>

按默认的 2 空格美化后,实测输出是 12 行 / 287 字符 / 8 个元素 / 最深 4 层:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 订单接口响应 -->
<order id="A-1024" xmlns:x="urn:deer">
  <customer name='小鹿'/>
  <items>
    <item sku="D-01" qty="2">鹿角挂钩</item>
    <item sku="D-02" qty="1"><![CDATA[限量 & 礼盒]]></item>
  </items>
  <note>
    <p>已<b>加急</b>发货</p>
  </note>
</order>

注意三处细节:注释独立成行没有被吞;单引号属性 name='小鹿' 没有被改成双引号; 混合内容 <p>已<b>加急</b>发货</p> 整段挤在一行、没有被拆开缩进——拆开就等于给文本节点加了空白。

再把这份美化结果切到压缩模式,它会一字不差地变回最初那段 1 行 254 字符的输入:美化只是插进了 33 个字符的纯空白,压缩再把这些空白去掉,美化与压缩来回往返不丢一个字符。换缩进宽度同样只动空白—— 同一份内容 2 空格是 287 字符、4 空格是 309 字符、Tab 是 276 字符,行数都是 12 行,标签、属性与文本一个字符不变。

XML 格式化能做什么、不能做什么