开发者工具 · JSON / 数据格式

XML 格式化

缩进/校验/树视图

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 49 次使用
输 入 XML
格式化结果将在这里呈现 —— 点「示例」试试
就绪 · 粘贴 XML 实时格式化与校验,支持树视图,全程本地处理
第一节

关于本工具

About

在调试接口或编写配置文件时,一个缺失的闭合标签就能让整段 XML 报错。把原始数据粘贴进来,点击格式化,它会自动缩进并高亮显示层级结构,同时校验语法错误,在树视图里标出问题节点。所有处理都在浏览器本地完成,原始内容不会上传到服务器。

使用场景

接口联调查异常

后端返回的 XML 报文在日志里挤成一整行,肉眼根本看不出哪个标签没闭合。复制到本工具的「校验」模式里,红色高亮直接标记出第 47 行缺少 </price> 结束符,同时自动缩进展开为树状结构,一眼定位到缺失的字段位置,不用再逐行数尖括号。

配置模板交接

运维同事离职前留下一份 3000 行的 Spring XML 配置,所有 bean 定义挤在一行里。用本工具的「缩进」功能格式化后,每个 <bean> 标签自动换行并缩进 4 空格,再切到「树视图」,能看清哪些 bean 是嵌套在 <property> 里的子 bean,交接时直接截图标注给新人。

API 文档截屏

写技术方案要贴 XML 请求示例,但编辑器里代码折叠后缩进混乱,截出来不好看。把原始 XML 粘贴到工具里点「缩进」,自动对齐到标准 2 空格缩进,再复制到 VS Code 里设置深色主题截屏,排版干净、不丢节点,评审时不用解释“这里缩进不对是排版问题”。

爬虫数据清洗

从某政府网站爬下来的 XML 数据里,<name> 标签里混着换行符和多余空格,导致入库时字段值不干净。先用本工具的「缩进」把结构理清,再用「校验」功能检查所有标签是否闭合,确认无语法错误后,直接复制格式化后的纯文本去写 XPath 解析规则,避免因格式问题反复调正则。

XSLT 调试对比

写 XSLT 转换模板时,需要对比转换前后的 XML 结构是否完整。把原始 XML 和转换结果分别粘贴到两个浏览器标签页里,都用本工具的「树视图」展开,能并排看到 <item> 节点下的 <title> 和 <description> 是否被正确映射,比对着原始缩进文件省一半眼力。

第二节

使用指南

Getting Started

使用步骤

  1. 1在输入区粘贴或键入 XML 文本,编辑器自动检测并高亮标签与属性语法
  2. 2点击「格式化」按钮,代码按标准缩进重排,同时校验标签闭合与结构合法性
  3. 3若 XML 有语法错误(如未闭合标签),错误行号与原因显示在结果区顶部红色提示条
  4. 4切换至「树视图」标签,以可折叠的节点树展示 XML 层级结构,点击节点定位到对应代码行
  5. 5点击结果区右上角复制图标,将格式化后的 XML 文本写入剪贴板

输入输出示例

输入输出说明
<note>这是一个测试</note><message>Hello World</message><?xml version="1.0" encoding="UTF-8"?> <root> <note>这是一个测试</note> <message>Hello World</message> </root>常规:最简单的 XML 片段,自动添加根节点并缩进,验证基本格式化功能
<book><title>XML入门</title><author>张三</author><price>39.9</price></book><?xml version="1.0" encoding="UTF-8"?> <book> <title>XML入门</title> <author>张三</author> <price>39.9</price> </book>常规:多层级嵌套,验证缩进深度和属性保持
<data><item id="1">值1</item><item id="2">值2</item></data><?xml version="1.0" encoding="UTF-8"?> <data> <item id="1">值1</item> <item id="2">值2</item> </data>常规:带属性的元素,验证属性不被破坏且缩进正确
错误:输入内容为空,请输入有效的 XML 字符串边界:空输入,验证工具对空白输入的友好提示
错误:输入内容仅包含空白字符,请输入有效的 XML 字符串边界:纯空白输入,验证工具能区分空白与有效内容
<root><child>内容</child>错误:XML 解析失败:开始标记 <root> 与结束标记不匹配,缺少 </root>易错:不完整的 XML(缺少闭合标签),验证校验功能能定位具体错误位置
<root>特殊字符 & < > " '</root>错误:XML 解析失败:第 1 行第 13 个字符处,实体引用必须以 ';' 结尾(遇到 '<')易错:未转义的特殊字符(& < >),验证工具能提示实体转义规则
<root><sub>嵌套1<sub>嵌套2<sub>嵌套3</sub></sub></sub></root><?xml version="1.0" encoding="UTF-8"?> <root> <sub>嵌套1 <sub>嵌套2 <sub>嵌套3</sub> </sub> </sub> </root>边界:深层嵌套(3层),验证缩进算法在多层嵌套下的稳定性

常见错误对照

1.根元素缺失,XML 结构不完整

✗ 错误<name>张三</name><age>25</age>
✓ 修复<root><name>张三</name><age>25</age></root>

XML 规范要求必须有且仅有一个根元素包裹所有子节点,否则解析器会报 'multiple root elements' 错误。

2.属性值未用引号包裹

✗ 错误<book id=123>
✓ 修复<book id="123">

XML 属性值必须用单引号或双引号括起来,裸写属性值会被解析器视为格式错误。

3.标签未正确闭合,导致嵌套混乱

✗ 错误<item><name>苹果</item>
✓ 修复<item><name>苹果</name></item>

XML 要求每个开始标签必须有对应的结束标签,且闭合顺序必须与打开顺序相反,否则校验失败。

4.特殊字符未转义,破坏解析

✗ 错误<note>a < b 且 c > d</note>
✓ 修复<note>a &lt; b 且 c &gt; d</note>

XML 中 <、>、& 是保留字符,直接使用会导致解析器误判标签边界,必须用 &lt;、&gt;、&amp; 替代。

5.注释语法错误,导致整段被吞

✗ 错误<!-- 这是注释 -- 多了一个横线 -->
✓ 修复<!-- 这是注释 -->

XML 注释以 <!-- 开头、--> 结尾,中间不允许出现连续两个减号(--),否则解析器会报语法错误。

6.CDATA 段内包含非法结束标记

✗ 错误<![CDATA[ 此处有 ]]> 内容 ]]>
✓ 修复<![CDATA[ 此处有 ]]]]><![CDATA[> 内容 ]]>

CDATA 段以 ]]> 结束,若内容本身包含 ]]>,必须拆分成多个 CDATA 段,否则解析器会提前截断。

7.命名空间前缀未绑定,校验报错

✗ 错误<ns:book>书名</ns:book>
✓ 修复<root xmlns:ns="http://example.com"><ns:book>书名</ns:book></root>

使用命名空间前缀时,必须在祖先元素中通过 xmlns:prefix 声明对应的 URI,否则解析器无法识别该前缀。

8.空白文本节点被误认为错误

✗ 错误<root> <item>值</item> </root>
✓ 修复<root><item>值</item></root>

缩进格式化后,标签间的空白符会被视为文本节点,虽然不报错,但树视图会显示多余空白节点,影响阅读。

第三节

工作原理

How It Works

核心公式

缩进深度 = 父节点缩进 + 缩进单位 × (子节点层级数 - 1)

变量说明

  • 父节点缩进父元素当前缩进空格数
  • 缩进单位每层缩进空格数,默认 2 或 4
  • 子节点层级数子节点在树中的深度序号

示例

根节点缩进 0,缩进单位 2,第三层子节点:缩进深度 = 0 + 2 × (3 - 1) = 4 空格。格式化后该节点前有 4 个空格,树视图显示为缩进 2 层。

原始 XML 文本词法分析(拆分标签/属性/内容)语法校验(检查闭合/属性引号)错误提示构建 DOM 树(层级结构)树视图渲染(缩进/折叠)格式化输出(带缩进的文本)
用户输入 / 错误提示 本地处理(浏览器内) 输出结果
第五节

常见问题

Q & A
我贴了一个 XML 进去,点格式化之后没反应,页面也不报错,怎么回事?

最常见的原因是粘贴的内容包含不可见字符(如零宽空格)或者 XML 声明前的 BOM 头。工具只处理标准 UTF-8 文本,建议先用记事本另存为「UTF-8 无 BOM」格式再复制。另外,如果文件非常大(超过 10MB),纯前端解析会卡住,建议分段格式化或用桌面编辑器。

格式化之后缩进是正确了,但能不能改成 2 空格缩进?默认好像是 4 空格。

当前版本默认使用 4 空格缩进,这是 XML 最通用的格式。如果团队规范要求 2 空格,格式化后可以在编辑器里用「查找替换」把 4 空格批量替换成 2 空格。部分高级 XML 工具支持自定义缩进,但本工具为了保持校验准确性,固定为 4 空格。

树视图里点某个节点,能直接复制那个节点的 XML 片段吗?

树视图当前仅支持展开/折叠节点查看层级结构,不支持点击复制片段。如果需要提取特定节点内容,建议在格式化后的文本区手动选中该节点起始标签到结束标签之间的内容复制。后续版本可能会增加右键复制功能。

为什么有些 XML 格式化后树视图显示不完全,节点展开后内容空白?

这种情况通常是因为 XML 中包含了自闭合标签(如 <br/>)或者空标签(如 <tag></tag>),树视图对这些节点只显示标签名,不显示内容区域,属于正常行为。如果节点确实有文本内容但空白,可能是 XML 编码问题(比如用了 &amp; 等实体),检查原始 XML 是否合法。

这个工具能校验 XML 的 Schema 或 DTD 吗?

不能。本工具的「校验」仅检查 XML 语法是否合法(标签闭合、属性引号、根节点唯一等),不验证是否符合特定 Schema(XSD)或 DTD 定义。如果需要做 Schema 校验,建议使用在线 XSD 验证器或集成到 CI/CD 流程中。

把 XML 贴进去格式化,数据会不会上传到服务器?

不会。本工具所有处理(格式化、校验、树视图生成)都在浏览器本地完成,数据不会离开你的设备。页面加载后即可断网使用,适合处理包含敏感信息的配置文件。如果遇到页面刷新后工具不可用,重新加载即可。

格式化之后有些标签被自动换行了,但我希望它们保持在一行,能控制吗?

不能。本工具的格式化算法会对所有标签进行标准化换行——每个标签独占一行,子标签缩进。如果你需要保留某些标签不换行(比如 <item><name>张三</name></item>),建议格式化后手动调整,或使用支持「保留内联」的专用 XML 美化工具。

为什么我贴的 XML 在别人工具里能格式化,在这里却报错说「不合法」?

不同工具的容错机制不同。本工具严格遵循 XML 1.0 规范,对以下情况会报错:属性值未加引号、注释中有连续两个减号、标签名包含空格、未转义的 & 符号。其他某些工具会尝试自动修复这些错误,但本工具坚持「不合法就不格式化」,避免输出有歧义的 XML。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭