XML 验证工具 - 在线 XML 语法检查与格式化
免费在线 XML 验证工具,支持 XML 语法检查、格式化美化、压缩。即时的错误检测,精确到行。100% 浏览器端运行,无需注册。
什么是 XML 校验器?
XML 校验器用于检查 XML 文档是否符合正确的语法规则(即'格式良好')。格式良好的 XML 必须具有正确嵌套的标签、匹配的开闭标签、有效字符和单一根元素。我们的在线 XML 校验器使用浏览器原生 DOMParser 在严格 XML 模式下解析您的 XML,即时反馈语法错误——包括解析失败的具体行号和位置。除了验证,您还可以使用可配置缩进格式化(美化)XML,或压缩用于生产环境。
如何验证和格式化 XML
粘贴 XML
将 XML 内容复制粘贴到输入文本框中。自动验证功能会在您输入时检查语法。
点击验证
按验证按钮检查格式良好性。任何语法错误都会显示来自 XML 解析器的精确错误描述。
格式化或压缩
验证成功后,点击格式化以整洁的缩进美化 XML,或点击压缩将其转换为紧凑的单行格式。
复制使用
点击输出面板上的复制按钮,将验证和格式化后的 XML 复制到剪贴板以供项目使用。
XML 验证常见使用场景
API 响应调试
验证来自 SOAP API、RSS 订阅源或基于 XML 的 Web 服务的 XML 响应。快速识别可能损坏 XML 解析器的格式错误响应。
配置文件检查
在部署到生产环境之前检查 XML 配置文件(web.config、pom.xml、AndroidManifest.xml)的语法错误。
数据交换验证
在将 XML 数据文件导入数据库或数据处理管道之前进行验证,避免工作流中途出现解析失败。
站点地图验证
在提交到 Google 和 Bing 等搜索引擎之前,确保 XML 站点地图格式良好。
常见 XML 语法错误及修复方法
XML 对语法要求严格。即使只缺少一个闭合标签,也会导致整个文档解析失败。以下是开发人员最常见的 XML 错误:
| 错误类型 | 示例 | 修复方法 |
|---|---|---|
| 未闭合标签 | <name>value | <name>value</name> |
| 标签不匹配 | <a><b></a></b> | <a><b></b></a> |
| 无效字符 | <name>a & b</name> | <name>a & b</name> |
| 缺少根元素 | <a/><b/> | <root><a/><b/></root> |
XML 验证的工作原理
XML 验证是检查文档是否符合 XML 规范的格式良好性规则。与浏览器宽容解析的 HTML 不同,XML 解析器非常严格——单个语法错误就会导致整个文档被拒绝。了解 XML 解析的工作原理有助于编写更好的 XML 和更快地调试问题。
什么使 XML 格式良好?
- 每个开始标签必须有匹配的结束标签(或自闭合:<tag/>)。
- 标签必须正确嵌套——内层标签必须在外层标签之前闭合。
- 特殊字符(&, <, >, ', ")必须分别转义为 &, <, >, ', "。
- 必须恰好有一个包含所有其他元素的根元素。
- 属性值必须用引号括起来(单引号或双引号)。
我们的校验器如何工作
我们的工具使用浏览器内置的 DOMParser,采用 'text/xml' MIME 类型,触发严格的 XML 解析模式。当解析器遇到错误时,会向文档中插入一个 <parsererror> 元素。我们检测此元素并提取错误信息,通常包括行号、列号和问题描述。这与主流浏览器和许多 XML 库使用的解析行为一致。
请注意,我们的工具检查格式良好性(语法),而非针对 DTD 或 XSD 模式的验证。模式验证需要访问模式定义文件,是 XML 处理工作流中的单独步骤。
如何以编程方式验证 XML
学习在不同编程语言中验证 XML。每个示例演示带错误检测的 XML 解析。
JavaScript
function validateXML(xmlString) {
const parser = new DOMParser();
const doc = parser.parseFromString(xmlString, 'text/xml');
const err = doc.querySelector('parsererror');
if (err) {
return { valid: false, error: err.textContent };
}
return { valid: true, doc };
}Python
import xml.etree.ElementTree as ET
def validate_xml(xml_string):
try:
ET.fromstring(xml_string)
return {"valid": True}
except ET.ParseError as e:
return {"valid": False, "error": str(e)}Java
import javax.xml.parsers.DocumentBuilderFactory;
import org.xml.sax.InputSource;
import java.io.StringReader;
public static boolean isValidXML(String xml) {
try {
var f = DocumentBuilderFactory.newInstance();
var b = f.newDocumentBuilder();
b.parse(new InputSource(new StringReader(xml)));
return true;
} catch (Exception e) {
return false;
}
}XML 验证常见问题
XML 看起来正确但验证失败
像 BOM(字节顺序标记)、不间断空格或控制字符等不可见字符可能导致 XML 解析失败。尝试以纯文本形式清除并重新粘贴 XML。某些解析器中 Windows 风格的换行符(CRLF)也可能导致问题。
特殊字符导致解析错误
字符 &、<、>、' 和 " 在 XML 中具有特殊含义。分别替换为 &、<、>、' 和 "。这在包含 URL 或代码片段的 XML 中尤其常见。
CDATA 部分未通过验证
CDATA 部分用于包含否则会被视为标记的字符。正确语法为 <![CDATA[ 内容 ]]>。常见错误包括多余空格或括号不匹配。
编码声明不匹配
如果 XML 声明写的是 <?xml version="1.0" encoding="UTF-8"?> 但实际文本使用不同编码,解析器可能在非 ASCII 字符处失败。确保文本与声明的编码匹配。
XML 验证常见问题解答
什么是 XML 验证?
XML 验证是检查 XML 文档是否遵循 XML 规范定义的语法规则的过程。有两个层级:格式良好性(正确的语法——标签匹配、正确嵌套、有效字符)和有效性(符合 DTD 或 XSD 模式)。我们的工具检查格式良好性,这是模式验证之前必不可少的第一步。
格式良好与有效的 XML 有什么区别?
格式良好的 XML 遵循基本语法规则(匹配标签、正确嵌套、转义字符、单一根元素)。有效的 XML 既格式良好,又符合 DTD(文档类型定义)或 XSD(XML 模式定义)中定义的结构。格式良好性是语法检查;有效性是针对模式的结构和内容检查。我们的工具专注于格式良好性验证。
最常见的 XML 语法错误有哪些?
最常见的 XML 错误是:(1) 未闭合标签——忘记 </name> 这样的闭合标签;(2) 嵌套不匹配——<a><b></a></b> 应该是 <a><b></b></a>;(3) 未转义特殊字符——使用 & 而不是 &;(4) 缺少根元素——多个顶级元素而没有单一根元素;(5) 大小写不匹配——<Name>...</name>,XML 区分大小写。
XML 与 JSON——应该使用哪个?
JSON 已成为 Web API 的主流数据交换格式,因为其简单性和 JavaScript 原生解析支持。然而,XML 在以下方面仍然重要:SOAP Web 服务、RSS/Atom 订阅源、文档格式(DOCX、ODT)、配置文件(pom.xml、web.config)、站点地图,以及已建立 XML 标准的行业(金融业的 XBRL、出版业的 DocBook)。根据您的生态系统需求选择。
如何在线格式化(美化)XML?
使用我们的免费在线 XML 格式化工具——粘贴 XML,选择您偏好的缩进(2 空格、4 空格或 Tab),然后点击格式化。该工具解析 XML 确保格式良好,然后输出整洁、正确缩进的版本。与基于简单正则表达式的格式化工具不同,我们基于 DOM 的方法能正确处理文本内容和属性。
XML 中的 DTD 是什么?
DTD(文档类型定义)定义了 XML 文档的合法结构——可以出现哪些元素、它们的顺序以及可以有哪些属性。它是 XML 较旧、较简单的模式语言。示例:<!DOCTYPE note SYSTEM "note.dtd"> 引用外部 DTD。虽然 DTD 仍在使用,但由于 XSD 支持数据类型和命名空间,新项目中大多已用 XSD(XML 模式定义)取代。
什么是 XSD(XML 模式定义)?
XSD(XML 模式定义)是比 DTD 更强大的 XML 模式语言。它支持数据类型(字符串、整数、日期等)、命名空间和复杂内容模型。XSD 模式本身是 XML 文档,更易于程序化处理。大多数现代基于 XML 的系统使用 XSD 而非 DTD 进行验证。
XML 可以压缩吗?
是的,XML 可以通过去除标签间的不必要空白来压缩。我们的工具提供压缩功能,可将 XML 压缩为紧凑的单行。压缩可减少生产环境的文件大小——对于 SVG 精灵图或大型站点地图等大量使用 XML 的应用来说很重》要。但请注意,XML 中的某些空白可能是有意义的(例如在混合内容中),所以请谨慎压缩。
XML 应该使用什么编码?
UTF-8 是 XML 文档推荐且最常用的编码。它支持所有 Unicode 字符,并且根据 XML 规范是默认编码。始终包含编码声明的 XML 声明:<?xml version="1.0" encoding="UTF-8"?>。除非有特定的兼容性要求,否则避免使用像 ISO-8859-1 这样的遗留编码。
这个工具能处理大型 XML 文件吗?
我们的 XML 验证器完全在浏览器中使用原生 DOMParser 运行,通常可以处理多达几兆字节的文件。对于非常大的 XML 文件(100MB+),建议使用命令行 XML Linter,如 xmllint 或流式 XML 解析器。该工具没有文件大小限制,取决于浏览器的解析能力——不会上传任何内容到服务器。