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 解析器。该工具没有文件大小限制,取决于浏览器的解析能力——不会上传任何内容到服务器。