XML Formatter / Validator

XML 格式化 / 验证器

美化、压缩、验证任意 XML — REST 响应、SOAP envelope、RSS feed、sitemap、Maven、AndroidManifest 全部支持。语法高亮输出、行 + 列错误报告。完全在浏览器中运算。

Well-formed(格式正确) 是基本的结构规则:标签必须正确嵌套并关闭、属性必须加引号、必须有单一的根元素、特殊字符必须 escape(<& 等)。本工具用浏览器原生 DOMParser 检查 well-formed。

Validity(有效性) 是更严格的、对 schema(DTD、XSD、RelaxNG)的检查 — 「文档符合这套语法」。浏览器 DOMParser 不做 schema 验证;XSD 验证需要服务器端工具,例如 xmllint --schema

会。CDATA 区段(<![CDATA[…]]>)里的内容会原样保留 — 特殊字符不会被重新 escape。注释(<!-- … -->)和 processing instruction(<?xml-stylesheet … ?>)会放回原本的位置。XML declaration 与 doctype 行会作为前几行保留。

输入
输出

            

为真实 XML 设计,不只是 toy example

SOAP envelope、RSS feed、sitemap、Maven `pom.xml`、AndroidManifest — 格式化、压缩、验证都正确处理。

Pretty-print 美化排版

可选 2 空格、4 空格、或 Tab 缩进。Self-closing 标签保持自闭合。CDATA 区段、注释、processing instruction、XML declaration 在 round-trip 后完整保留。

压缩(Minify)

去除元素之间无意义的空白,把整份文档压成单行。适合把 XML 嵌入 JSON 字符串字段,或在窄带网络上传输。

验证并标出行 + 列

用浏览器原生 DOMParser 检查 well-formed。出错时会显示出错的行 + 列,可以直接跳到问题位置。

输出语法高亮

标签名、属性、属性值、文本内容、注释、CDATA、processing instruction 全部以颜色区分,结构一眼看清楚。

保护隐私

所有数据都留在浏览器中。解析、格式化、验证、下载都以 JavaScript 在你的设备上执行。打开 DevTools → Network 可验证没有任何对外请求。

轻量且快速

纯 JavaScript,无框架运行时。冷启动 gzip 后不到 25 KB。格式化 200 KB 的 XML 文档并重新渲染语法高亮,80 毫秒内完成。

如何格式化与验证 XML

从杂乱的 XML 到干净、可验证的输出,只需四步。

  1. 1

    粘贴你的 XML

    拖入或粘贴任意 XML — REST API 响应、SOAP envelope、RSS / Atom feed、sitemap、配置文件。输入时会自动格式化(防抖 350 毫秒)。

  2. 2

    选择缩进

    2 空格是现代默认值(符合 Prettier 与多数风格指南)。4 空格是较旧的惯例(Java.NET)。Tab 对应你编辑器的 tab 宽度 — 适合后续手动编辑的文档。

  3. 3

    验证或压缩

    验证 会报告 well-formed 错误并标出行 + 列。压缩 把整份文档压成单行 — 适合把 XML 嵌入 JSON 字符串、数据库字段、或 shell 变量。

  4. 4

    复制或下载

    点击复制图标把整理后的 XML 送进剪贴板,或下载为 formatted.xml。输出会保留 CDATA、注释、processing instruction、XML declaration。

为 SOAP、RSS、sitemap、配置文件而生

四种常见 XML 工作场景 — 在这些情况下,浏览器内的格式化器比打开 IDE 快得多。

SOAP / API 调试

把网络日志中原始的 SOAP 响应粘贴进来、格式化,真正的 fault 就会在 envelope 中清楚显现。错误的行 + 列让你几秒钟就能定位到拼错的命名空间前缀,或文本中未 escape 的 &

Sitemap 与 RSS 编写

粘贴你手写的 `sitemap.xml` 或 RSS feed,在提交到 Search Console / 聚合器之前先验证 well-formed。也可以压成单行,嵌入到自动化脚本中。

构建文件与配置文件

Maven pom.xml、Spring beans、NHibernate mappings、Android AndroidManifest.xml — 手动编辑后重新格式化都很方便。提交前先验证一次,可以提前发现那些等到 build 时才会报错的拼写错误。

Office 文档与 EPUB 内部

.docx.xlsx.pptx.epub 都是包含 XML 的 ZIP 文件。把内部 XML 解压出来、粘贴到这里格式化,结构清楚之后再压回 ZIP。

100% 私密 — 在浏览器中运算

XML 内容永远不会离开你的设备。打开 DevTools → Network,在格式化、验证、复制、下载过程中你会看到完全没有任何对外请求。

  • 解析使用浏览器原生 DOMParser;格式化与压缩只是简单的 JavaScript 遍历所生成的 DOM 树。
  • 无远程 validator、无第三方 XML API。你的 XML 每一个字节都留在你的设备上。
  • 无需登录,不对文档内容做任何埋点。我们只用一个 cookie 记录 cookie 同意状态,以及一个 cookie 记录语言偏好。

相关文章

为 XML、SOAP 调试、配置文件工作流精选的实用文章。

常见问题

什么是 well-formed?跟「valid」XML 的区别是什么?

Well-formed(格式正确) 是基本的结构规则:标签必须正确嵌套并关闭、属性必须加引号、必须有单一的根元素、特殊字符必须 escape(&lt;&amp; 等)。本工具用浏览器原生 DOMParser 检查 well-formed。

Validity(有效性) 是更严格的、对 schema(DTD、XSD、RelaxNG)的检查 — 「文档符合这套语法」。浏览器 DOMParser 不做 schema 验证;XSD 验证需要服务器端工具,例如 xmllint --schema

格式化会保留 CDATA、注释、processing instruction 吗?

会。CDATA 区段(<![CDATA[…]]>)里的内容会原样保留 — 特殊字符不会被重新 escape。注释(<!-- … -->)和 processing instruction(<?xml-stylesheet … ?>)会放回原本的位置。XML declaration 与 doctype 行会作为前几行保留。

可以粘贴 SOAP envelope 或 RSS feed 吗?

可以,只要是 well-formed XML 都能用 — SOAP envelope(含 soap:Envelopesoap:Body 命名空间前缀)、RSS / Atom feed、sitemap、SVG、plist、Maven pom.xml、Spring 配置、EPUB container.xml、Android AndroidManifest.xml。namespace 前缀会被保留 — 我们不会去除 xmlns: 属性。

看起来没问题,为什么提示我的 XML 有 parser error?

最常见的原因:(1)文本或属性值中未 escape 的 & — 必须写成 &amp;;(2)两个根元素(XML 只允许一个);(3)开闭标签大小写不一致(例如 <Item>…</item> — XML 区分大小写);(4)属性值没加引号;(5)文本内容里有未配对的 <。错误信息中的行 + 列会指向出错的位置。

数据会发送到服务器吗?

不会。解析、格式化、压缩、验证、语法高亮、下载都在你的浏览器中以 JavaScript 执行。打开 DevTools → Network 可验证使用过程中没有任何对外请求。我们只用一个 cookie 记录 cookie 同意状态,以及一个 cookie 记录语言偏好,仅此而已。