XML 格式化
粘贴 XML 就自动排版,文本和属性一个字符都不改。
格式化结果
怎么用
- 把 XML 粘进输入框——随输入自动排版,不用点按钮。
- 选「格式化」或「压缩」,再选 2 或 4 空格缩进;结果立刻更新。
- 结构写错时,提示会给出第几行第几列和具体原因;结果可一键复制或下载为 .xml 文件。
示例
输入
<!-- 订单导出:保留原文与属性顺序 --> <订单 编号="A-1042"> <客户><姓名>张伟</姓名><城市>杭州</城市></客户> <备注>请在周五之前发货 & 通知仓库。</备注> </订单>
输出
<!-- 订单导出:保留原文与属性顺序 -->
<订单 编号="A-1042">
<客户>
<姓名>张伟</姓名>
<城市>杭州</城市>
</客户>
<备注>请在周五之前发货 & 通知仓库。</备注>
</订单>默认只做格式化:一层一行、每层 2 空格。属性顺序与引号原样保留,<姓名> 里的文本一个字符都没动,& 也不会被展开成 &。
规则、局限与已知问题
- 只做结构检查:标签配对、属性引号/重复/分隔、元素名与属性名、实体语法。不做 DTD / XSD 校验,不解析实体声明,不检查命名空间前缀是否已声明。
- 只改结构空白:属性之间的空白、以及「元素里只含空白」的那段空白。属性顺序、引号风格、属性值、实体写法、注释、CDATA、DOCTYPE 内部子集都逐字符保留。
- 混合内容不重新缩进:<p>Hi <b>there</b>!</p> 会保持原样空白,因为插入换行就等于改动文本。xml:space="preserve" 的子树整段原样输出。
- 空元素保持你的写法:<a></a> 不会折叠成 <a/>,<a/> 也不会展开;属性不排序、引号不统一。
- 压缩只删结构空白:文本里的空白、注释、CDATA 与 DOCTYPE 都保留,不从你的内容里删任何东西。
- 输入末尾的未闭合标签/注释/CDATA/DOCTYPE 只给提示、不算错误——仍然出结果,这是实时输入的正常状态。真正写错(标签不匹配、属性值没引号、单独的 &)才报错并给行列。
- 片段(多个顶层元素、或根元素之外还有文本)会按片段排版并提示;完全没有元素则报错。
- 行列号按 Unicode 码点计,emoji 记 1 列;只有空格、Tab、换行、回车算空白,文本里的全角空格 U+3000 与不换行空格 U+00A0 属于内容,永远不会被删掉。
- 不支持 HTML:省略 </li>、<br> 这类写法会如实报未闭合/不匹配。不提供文件上传、URL 传参、历史记录、树视图、XML→JSON。不上传、不保存。
- 超过 20 万字符时,结果会在停止输入约 0.6 秒后更新;不截断文本。输出使用 LF、无末尾换行;排版是幂等的(把结果再排一次不会变化)。
相关工具
结构排清楚之后,通常还会用到这些。