XML 验证器
在发布 feed、站点地图、SVG 或配置文件之前,检查 XML 文档是否格式良好。验证器会扫描标签、属性、嵌套结构和字符,并报告第一个问题及其行号、列号和解析器说明,例如不匹配的结束标签。格式良好的文档会显示根元素、元素和属性的数量以及嵌套深度。它检查的是格式是否良好,不检查 DTD 或 XSD 规则。
常见问题
格式良好的 XML 与有效的 XML 有什么区别?
格式良好的 XML 遵循基本语法规则:只有一个根元素,标签正确嵌套并闭合,属性使用正确的引号。有效的 XML 还必须符合定义允许使用哪些元素的 DTD 或 XML Schema。此工具检查格式是否良好;所有 XML 解析器在进行其他处理之前都要求满足这一点。
具体会检查哪些内容?
验证器会检查是否恰好有一个根元素、每个标签是否按正确顺序闭合、标签名和属性名是否有效、属性值是否加引号且没有重复,以及元素外是否出现多余字符。XML 声明、注释、CDATA 节和处理指令均可接受。
错误类型分别是什么意思?
错误分为四类:文档结构、标签、属性和字符。错误行会用通俗语言指出所属类别,详细信息行则提供解析器的准确说明,例如指出预期的标签。两者都会附上问题所在的行号和列号。
为什么不带值的属性会被拒绝?
HTML 允许使用 <input disabled> 等布尔属性,但 XML 要求每个属性都有加引号的值。请写成 disabled="disabled",或移除该属性。同一规则也适用于 SVG 和 XHTML 文件。
可以用它验证 HTML 吗?
只能验证 XHTML,也就是用 XML 编写的 HTML。普通 HTML 允许 <br> 或 <img> 等元素不闭合,也允许属性不加引号,而 XML 不允许这些情况,因此通常会被报告为格式不良。
支持 DOCTYPE 声明和实体吗?
带有实体声明的 DOCTYPE 会作为语法检查的一部分被接受,但实体不会展开,也不会获取任何外部文件。这样可以加快检查速度,并防止实体扩展攻击。& 和 < 等预定义实体始终可用。
支持命名空间吗?
svg:rect 或 xsi:schemaLocation 等带前缀的名称可用作元素名和属性名。验证器不会解析命名空间 URI,也不会检查每个前缀是否已声明。
有效文档的统计信息显示什么?
根元素是最外层的标签;Elements 统计包括根元素在内的所有元素;Attributes 统计文档中的所有属性。Maximum depth 是最深的嵌套层级,根元素为第 1 层。这些数字有助于确认 feed 或导出内容是否符合预期。
行号和列号如何计算?
两者都从输入开头开始计数,起始值为 1。该位置指向解析器发现问题的地方;对于未闭合的标签,位置可能在其开始标签本身。只会报告第一个错误。
XML 最大能有多大?可以转换吗?
输入最多可达 5 MiB。要将格式良好的文档转换为 JSON、YAML、CSV 或其他格式,请使用数据格式转换器,或使用 XML 到 JSON 工具。