XML 格式化与压缩器,免费

粘贴 XML 以即时进行格式化、美化或压缩。

没有数据离开您的设备

使用方法

  1. 在输入区粘贴您的 XML。
  2. 点击格式化美化或压缩压缩。
  3. 复制下载结果。

常见问题

如果我的 XML 有错误会怎么样?

工具使用浏览器内置的 DOMParser 校验您的 XML。语法错误会在输出上方的红框中显示。

它支持 CDATA 段、注释和处理指令吗?

支持。格式化器保留所有类型的 XML 节点,包括 CDATA 段、注释和处理指令。

有大小限制吗?

没有硬性限制 · 取决于您浏览器的内存。多 MB 的 XML 文件通常能即时格式化。

XML实用指南

XML 1.0于1998年2月10日成为W3C推荐标准,由Tim Bray、Jean Paoli和C. M. Sperberg-McQueen编辑,工作组由Sun公司的Jon Bosak主持。Tim Bray在发布时的一句话概括了设计意图:「XML是可扩展的、国际化的、健壮的、简洁的,并为Web而生。」当前的权威版本是第五版,发布于2008年11月26日,由Bray、Paoli、Sperberg-McQueen、Eve Maler和François Yergeau编辑。XML直接源自SGML(ISO 8879:1986),SGML是一种更庞大、更难实现的文档格式,XML从中去除了大部分鲜少使用的部分,同时保留了文档模型。

XML在2026年仍活跃的领域

JSON已主导REST API载荷超过十年,但XML在任何需要模式严格性、文档语义或既有标准约束的地方依然根深蒂固。了解您日常会在哪里遇到它,是掌握一个好格式化工具价值的一半:

格式良好与有效:两者并不相同

XML使用两种不同的规范级别,两者很容易混淆:

本格式化工具仅检查格式良好性。浏览器内置的 DOMParser 通过一个 parsererror 元素报告遇到的首个解析错误,工具将其显示在红色错误框中。针对模式的有效性验证需要不同的工具(XSD用Saxon、libxml2的 xmllint --schema、W3C验证服务等)。

五个预定义实体引用

根据W3C XML 1.0 §4.6,「格式良好的文档无需声明以下任何实体」:ampltgtaposquot。结尾分号是强制性的;与某些HTML用法不同,XML永远不接受 &amp 后面不加 ; 的写法。

实体字符适用场景
&lt;<在元素内容中始终需要(否则会开始一个标签)
&amp;&始终需要(否则会开始一个实体引用)
&gt;>在内容中出现 ]]> 序列时是必需的;在其他地方推荐使用以保持对称
&apos;'在以单引号分隔的属性值内
&quot;"在以双引号分隔的属性值内

CDATA节、注释和处理指令

任何对XML进行格式化的人最终都会遇到的三种特殊语法特性:

命名空间

XML的命名空间机制允许多种词汇在单个文档中共存:Atom加自定义扩展、SOAP加WS-Security标头、OOXML的主文档部件引用来自其他命名空间的关系、绘图和图片。语法是默认命名空间用 xmlns="…",前缀命名空间用 xmlns:prefix="…",格式化工具保留两者不变。命名空间URI是标识符,不是URL,不必解析为任何内容。

两个著名的XML安全陷阱

十亿笑声攻击。一个带有递归展开实体的小型XML文件,可在解析器内存中膨胀到数十亿个字符:

<!ENTITY lol "lol">
<!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
<!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
<!-- … nine more layers later, the document expands to 10^9 lols -->

现代解析器通过限制实体展开来防御此攻击。XXE(XML外部实体)攻击利用解析外部实体的解析器来读取本地文件(<!ENTITY xxe SYSTEM "file:///etc/passwd">)或触发来自服务器的SSRF请求。OWASP的XXE预防备忘单措辞明确:「始终完全禁用DTD(外部实体)是防止XXE的最安全方式。」这正是浏览器的 DOMParser 所做的:它完全忽略DOCTYPE实体声明,这也是为什么这个客户端格式化工具可以安全地处理不可信XML。

美化格式与压缩

当空白真正重要时(例如文档中嵌入的原始代码),xml:space 属性是您的应急出口。在祖先元素上设置 xml:space="preserve",符合规范的处理器将逐字节保留后代中的每个空格和换行符。

格式化工具能捕获的常见XML错误

  1. 文本内容中存在未转义的 &和号在文本中始终无效;请使用 &amp;
  2. 标签不匹配或未闭合。最常见的解析错误。每个 <tag> 都需要一个对应的 </tag>(或使用自闭合形式 <tag/>)。
  3. 多个根元素。XML文档必须恰好有一个最外层元素。如果顶层有两个同级元素,请用一个父元素将它们包裹。
  4. 编码不匹配。<?xml version="1.0" encoding="UTF-8"?> 声明必须与文件的实际字节编码匹配。带UTF-8声明的UTF-16 BOM是此类错误的典型案例。
  5. 属性值中包含保留字符。<tag attr="a<b"> 是无效的,即使 < 在引号内看似无害。
  6. XML声明前有杂散BOM。某些文本编辑器会静默插入UTF-8 BOM,这会使严格解析器出错。
  7. xml:space="preserve" 区域内的混合行尾。不一致的CR / LF / CRLF在跨平台往返时会产生可见的空白差异。

更多常见问题

为何我的XML格式化后没有输出?

最常见的原因是输入格式不良好。输出上方的错误框显示浏览器 DOMParser 遇到的首个解析错误,通常是标签缺失或不匹配、未转义的 &,或缺少根元素。修复错误后重新运行。

我的XML会上传到服务器吗?

不会。格式化和压缩均在浏览器内置的 DOMParser 和一个小型JavaScript序列化器中运行。您的XML不会离开页面,这对包含凭据、内部URL或敏感客户数据的SOAP载荷、配置文件等内容至关重要。

该工具能否根据XSD或DTD模式验证?

不能。模式验证需要加载模式文件并解析其引用,这与浏览器执行的格式良好性检查是不同的问题。XSD验证请在命令行使用Saxon或 xmllint --schema,或W3C XML模式验证服务。

XML在2026年还相关吗,还是应该直接用JSON?

取决于您的使用场景。对于新的REST API,JSON几乎总是正确的选择。但XML仍然是Office文档(.docx.xlsx)、企业消息传递(SOAP、金融标准)、Android资源文件、EPUB、RSS / Atom、SVG以及大多数受监管行业数据交换的默认格式。掌握XML的阅读、格式化和验证仍是基础技能;只是它不像JSON那样是每天的首选工具。

「保留所有节点类型」对格式化工具意味着什么?

CDATA节、注释和处理指令均保持与输入中完全相同的形式,格式化工具仅更改元素之间的空白。因此,<![CDATA[ if (a < b) { … } ]]> 块能逐字节往返,即使其内容包含通常需要转义的 < 字符。

相关工具

免费在线 JSON 格式化器和验证器 JSON → YAML 转换器,免费 免费 SQL 格式化工具