XML 格式化与校验
美化或压缩,树形折叠视图,解析错误给出行列与 CDATA、命名空间提示。
输入
输出
解析是自己写的字符扫描器,没有借用浏览器 DOMParser:属性值里的 & 和 > 不会截断标签,CDATA 段里的尖括号原样留着,<!DOCTYPE … [ … ]> 里带引号的子集也不会被误判成结束。每个 token 都记着起始位置与行号,所以出错时能准确说出第几行第几列。三种模式各管一件事:美化按缩进重写、压缩去掉无语义空白、树视图用折叠结构展开。
检查的是 XML 1.0 的「格式良好」:只有一个根元素、结束标签同名(区分大小写)、属性必须带引号且同名只能出现一次、注释与 CDATA 要收尾,不合法时第一条错误连同行列和原文片段一起给出,并说明还有几处同类问题。命名空间前缀没写 xmlns 声明按规范是致命的,但判定需要完整的命名空间上下文,这里只降级成警告;DTD 与 XSD 约束下的「合法性」更不在此列。
XML 格式化与校验怎么用
- 美化与压缩:粘上 XML 直接执行。压缩掉的空白数量、CDATA 与实体的处理策略会写在输出上方的提示条里;实体引用只统计不替换,避免改变原文语义。美化会删掉元素之间的纯空白文本再按缩进重写,非空白文本原样保留(不裁首尾空格);压缩把这些无语义空白去掉,CDATA 与标了 xml:space="preserve" 的内容照常保留。
- 树视图:想看结构和数量就切「树视图」:折叠的节点、属性与文本逐行排列,统计条里给出字节数、元素数、属性数与文本段数。元素、属性、文本、注释、CDATA、声明各占一行,超过 400 字符的文本只显示前一段。
- 定位报错:报错信息带「第 N 行第 M 列」和那一行的片段。改完再执行一次,直到不再出现红色提示——多根元素和漏写的结束标签是最常见的两类。
常见问题
为什么提示「只允许一个根元素」?
XML 要求文档只有一个根元素。你的内容大概并列写了两段,或者在根标签之外多了文本。把并列的部分包进同一个父元素,或删掉根之外的内容。
CDATA 和 & 这类实体为什么不动?
CDATA 段里的字符按定义不参与标记解析,工具整段原样搬运;实体引用(&、<、A 等)同理,只列出出现了几处。要不要还原成字符由你的业务决定,替换成文本可能反而破坏原意。
能通过它校验 XML 是否符合某个 XSD 或 DTD 吗?
不能。这里只判断格式良好(标签配对、属性加引号、唯一根元素等)。文档是否 valid 要靠外部 DTD 或 XSD 做类型与出现顺序约束,需要完整的校验器。
对应功能编号 #99无需安装,手机端同样可用按 Ctrl + K 换工具