XML 格式化

转换器

粘贴 XML 即自动缩进美化并校验结构,标签未闭合、引号缺失、命名空间错误都会精确报出行号。支持自定义缩进宽度,并可选择是否保留原有空行与注释。标签未闭合、属性引号缺失、命名空间前缀未声明都会精确报出行号。也能把格式化后的 XML 反向压缩成单行以减少传输体积。支持自定义缩进宽度与是否保留注释。

XML输入
XML输出

关于 XML 格式化

XML 格式化工具基于 DOMParser API 在浏览器本地对 XML 文档进行美化缩进和压缩,并校验标签是否正确闭合、嵌套是否合法。支持 XML 声明、处理指令、CDATA 区块、命名空间前缀、DTD 文档类型定义、注释和自闭合标签的正确处理。需要提醒的是:本工具做的是「格式良好性(well-formed)」校验,只检查标签是否成对、层级是否合法,并不会拿 XML Schema(XSD)或 DTD 里的规则去校验字段类型和业务约束——那是有效性(valid)校验,属于另一个层级。解析错误时精确定位行号和列号,方便排查格式问题。提供 2 空格、4 空格和 Tab 缩进选项,美化和压缩模式一键切换。支持 XML 命名空间前缀的保留和美化,正确处理带默认命名空间的根元素和带前缀的子元素。所有解析与格式化在浏览器本地执行,XML 数据不会被上传到服务器,适合处理 SOAP 接口报文、SVG 文件、Maven POM 和 Spring 配置等含敏感信息的 XML 文档。

空白在这类标记里不是附属信息,而是内容的一部分,这是与常见数据格式最根本的区别。同一份文档里,元素之间的缩进属于可忽略的空白,而元素内部用于分隔单词的空格、以及混合内容里的换行,都可能是有意义的。因此格式化前必须确认文档是否属于空白敏感类型,对这类文档做重排会让内容在语义上发生变化。

特殊区块的处理需要单独留意,因为它们内部的内容不遵循常规解析规则。原样文本块里的内容原封不动地保留,任何重排都会破坏它;注释里的内容同理,虽然对解析无影响,但把它挪到别处可能改变其意图(例如条件注释)。因此格式化工具应当原样保留这些区块,只在它们之外做缩进调整。

属性顺序与命名空间是格式化时容易被改动的部分。属性在语义上无序,重排不会影响解析结果,但在做版本比对时会造成大量无关差异;而命名空间前缀的变化虽不影响语义,却会让依赖特定前缀的表达式失配。因此若格式化的产物要进入版本管理,应保持属性顺序稳定,避免把格式化差异混进实质改动里。

与常见的数据交换格式相比,它更适合表达「带属性与混合内容的文档」,而不适合承载纯数据。纯数据场景里,另一种格式语法更简洁、解析也更直接;而当结构里既需要文本内容又需要描述性属性、或需要嵌入大段原样文本时,标记形式才有明显优势。因此选型要看结构特征,而不是沿用习惯。

大文档的处理方式会影响工具是否可用。完整解析需要把整棵树建在内存里,文档规模达到数百兆时会明显吃紧;而流式处理按事件逐段读取,内存占用稳定但难以做全局重排。因此对超大文档,格式化往往不是必要步骤,若确实需要缩进,应选择支持流式的实现并接受无法整体对齐的限制。

最后,格式合法性应当先于美观度检查。标签未闭合、属性缺少引号、命名空间未声明等问题会让文档无法被严格解析,此时做缩进只是在错误的结构上做美化,掩盖了真正的问题。因此合理的工作顺序是先做一次结构校验,确认文档合规,再执行格式化;顺序颠倒会让人误以为文件是好的。

实现原理

格式化按元素层级重排缩进。要点是空白在 XML 里可能是数据——元素内容中的空格与换行会原样保留,因此对含有意义的空白(如代码示例、诗歌)做自动重排会改动内容。安全做法是先确认文档里没有语义空白,格式化后再用解析器比对节点文本是否一致。

输入<a><b>1</b><b>2</b></a>
输出<a> <b>1</b> <b>2</b> </a>(节点文本与原文一致)

使用方法

  1. 打开「XML 格式化」
  2. 选择源格式与目标格式
  3. 根据需要调整输出选项
  4. 点击「转换」按钮,结果实时显示
  5. 复制或导出结果

使用场景

  • 美化接口报文 — 把单行的 SOAP/XML 响应格式化成带缩进的层级结构,快速定位节点。
  • 校验合法性 — 检查标签是否成对闭合、属性引号是否完整,避免上线后解析报错。
  • 压缩传输体积 — 把开发时格式化的 XML 压成一行,减少传输字节。
  • 日志分析 — 展开日志中复制出的 XML 片段,方便逐层查看问题。
  • 配置审阅 — 格式化 pom.xml、web.xml 等配置,便于 code review。
  • SVG 调试 — 格式化手写的 SVG 源码,检查路径与分组是否正确闭合后还原为单行。

常见问题

能校验 XML Schema(XSD)吗?

不能。本工具只做格式良好性(well-formed)校验,即标签闭合、嵌套正确;不做基于 XSD/DTD 的有效性校验。

缩进用几个空格?

默认 2 个空格缩进,输出统一规整,适合大多数代码风格。

CDATA 区块会被破坏吗?

不会。CDATA 内容会被原样保留,不做转义或换行处理。

为什么提示格式错误?

常见原因:标签未闭合、属性值缺引号、出现多个根节点、或特殊字符未转义。错误提示会给出位置。

DTD 和 Schema 有什么区别?

DTD 是 XML 早期定义文档结构的语法,内部或外部引用的实体写法较繁琐;XSD 用 XML 自身描述结构且支持数据类型约束,两者本工具均无法做业务级校验。

想转成 JSON?

请使用本站的「XML 转 JSON」工具。

用这个工具解析 XML 有 XXE 风险吗?

在本工具这里没有。XXE(XML 外部实体)攻击的根源是解析器遇到 DOCTYPE 里的外部实体时去加载本地文件或发起非预期的网络请求,从而泄露文件内容或被当作跳板做 SSRF;本工具完全在浏览器本地用 DOMParser 解析,不发起任何网络请求、不加载 DTD 外部实体,因此不存在 XXE 或数据外泄风险。需要留意的是:当你在自己的服务端或应用里解析来路不明的 XML 时,应显式关闭外部实体加载(例如 libxml 里禁用 NOENT 与 DTDLOAD),避免把这类风险带进你的生产程序。

格式化后 XML 声明前面多了空行报错?

XML 规范要求声明必须是文件第一个字符,前面不能有任何空白。格式化时保留首行声明位置不动、只格式化其后的内容;已产生空行的文件,删除声明前的空白即可修复。

广告