XML 快速开始
通过完整服务配置示例学习 XML 对比,涵盖基准与对照、结果导航、Git Diff、URL 加载、故障排查和分享隐私。
Compare XML 对比解析后的元素、属性和文本,而不只是把 XML 文档当作逐行文本。本指南通过一次配置审查,说明如何填写基准与对照、理解结果并安全分享。
从基准与对照开始
两个编辑器有明确的方向:
| 编辑器 | 放置内容 | 常见示例 |
|---|---|---|
| 基准(Base) | 原始或参考文档 | 已部署配置、预期 SOAP 响应、转换前的数据 |
| 对照(Contrast) | 要与基准核对的文档 | 拟部署配置、实际 SOAP 响应、转换后的数据 |
只存在于对照中的元素或属性会标记为新增,只存在于基准中的则标记为删除。交换两侧输入后,新增与删除也会互换,值变更的前后值随之反转。
完整示例
假设你正在部署前审查服务目录。将以下文档粘贴到基准:
<?xml version="1.0" encoding="UTF-8"?>
<catalog environment="production">
<!-- 当前部署的服务 -->
<service name="billing" enabled="true">
<endpoint protocol="https">https://billing.example.com/api</endpoint>
<limits>
<requests>100</requests>
<timeout>2.5</timeout>
</limits>
<region>us-east</region>
<region>eu-west</region>
<description><![CDATA[Primary billing service]]></description>
</service>
</catalog>
将拟部署文档粘贴到对照:
<?xml version="1.0" encoding="UTF-8"?>
<catalog environment="production">
<!-- 拟部署的服务配置 -->
<service name="billing" enabled="true">
<endpoint protocol="https">https://billing.example.com/api</endpoint>
<limits>
<requests>150</requests>
<timeout>2.50</timeout>
</limits>
<region>us-east</region>
<region>eu-west</region>
<region>ap-south</region>
<description><![CDATA[Primary billing API]]></description>
</service>
</catalog>
本示例请选择按索引匹配重复元素,并关闭两个大小写选项。请求上限和描述发生变化,第三个区域为新增。超时值 2.5 与 2.50 会转换为同一个数字,注释变化不会产生差异。
输入 XML
打开 Compare XML,在任一编辑器中可以:
- 粘贴完整且格式正确的 XML 文档;
- 拖放 XML 文件,或使用文件加载操作;
- 从 HTTP/HTTPS URL 导入 XML。GitHub Gist 页面链接会解析为原始文件内容。
通过 URL 导入时,来源必须可供浏览器公开访问,返回 XML 或纯文本,并允许浏览器通过 CORS 发起请求。下载成功也不代表内容一定是有效 XML。
解析和对比均在浏览器本地执行。从 URL 导入会联系你指定的来源;使用分享或在 URL 中放置数据前,请阅读下方隐私说明。
选择对比规则
使用对比旁边的设置,选择与数据含义相符的规则:
- 按索引、LCS 或无序决定重复子元素的匹配方式。
- 忽略元素/属性名大小写将
Service与service等名称视为等价。 - 忽略值大小写在比较文本和属性值时不区分大小写。
形似数字的值会自动转换为数字,没有单独的数字字符串开关。注释会被忽略,CDATA 作为文本参与对比。示例、重复值处理和命名空间前缀限制请参阅 XML 对比规则。
运行对比
点击对比。工具会验证并解析两侧输入,再递归比较其结构。结果页 /zh/tools/compare-xml/result 默认打开数据对比视图。
示例会将请求上限和 CDATA 文本标为值变更,将新区域标为新增。结果分类含义如下:
- 新增(绿色):元素、属性或值只存在于对照侧。
- 删除(红色):元素、属性或值只存在于基准侧。
- 值变更(黄色):对应位置的值不同。
相同表示解析后的文档在当前规则下相等,并不表示原始 XML 文本逐字节一致。
阅读规范化结果
数据对比侧边栏按类别分组并显示完整路径。点击条目可在对齐的编辑器中定位,也可使用类别开关聚焦当前审查。
数据对比展示的是根据解析值重新构建的 XML,因此缩进、行布局、数字写法、注释和 CDATA 形式都可能与输入不同。它是规范化结果视图,不是原始输入的逐字副本。
两种视图回答不同问题:
- 数据对比说明解析后的 XML 在所选规则下发生了什么变化。
- Git Diff 说明每个编辑器中原始文本发生了什么变化。注释、格式和数字写法的编辑即使在数据对比中被视为相等,仍可能在这里显示。
结果页的语义设置位于数据对比视图。从 Git Diff 切回后即可修改规则并重新计算结构结果。
分享与敏感数据
仅在编辑器中输入或粘贴 XML 进行对比,不会上传这些数据。解析和对比计算均在浏览器本地执行。使用分享会将对比内容上传到分享服务器,并生成带有 share_id、指向 /zh/tools/compare-xml/result 的链接;在过期前,任何获得链接的人都能加载该快照。
放入 URL 查询参数的数据会随页面请求传输,并可能被托管服务日志记录,因此请勿在 URL 中放入敏感数据。这既包括 Base64 编码的 XML,也包括远程来源地址。从 URL 导入还会向你指定的来源发起请求。
故障排查
编辑器提示 XML 无效
检查两侧是否存在标签不匹配、未转义的 &、属性缺少引号或文档外多余文本。移除日志或 HTTP 头等外围内容,确保每个编辑器只包含格式正确的 XML。
一次插入导致许多重复元素变化
按索引比较位置,插入元素可能使后续所有同级元素移位。顺序重要且希望已有元素跨插入、删除保持对齐时,请使用 LCS。只有顺序没有意义时才使用无序;重复元素的出现次数仍然重要。
预期变化没有显示
检查当前大小写选项和重复元素匹配方式。注意注释会被忽略,CDATA 按文本比较,形似数字的值会转换为数字。侧边栏中隐藏的类别也会让条目暂时不可见。需要审查精确源文本时,请切换到 Git Diff。
URL 导入失败
确认基准和对照参数或编辑器导入都使用可访问的 HTTP/HTTPS URL,并检查响应内容类型、XML 有效性、身份验证要求和 CORS 策略。对于 Gist,还要确认链接指向可访问的内容。
阅读 XML 对比规则,根据数据含义选择选项,而不是只为了让差异看起来更少。
浏览全部文档
查找对比选项、结果分享、浏览器扩展、AI 助手与各语言库的实用指南。
处理 XML
遵循面向 XML 的工作流,选择对比规则并检查文本变化。
加载、分享与离线使用
通过链接打开 XML 对比、分享快照或安装应用。
使用编辑器与 AI 集成
在 VSCode 中对比 XML,或为编码助手提供可靠的 XML 差异工具。
使用 XML 开发库
为 JavaScript 应用、脚本和 CI 添加语义化 XML 对比能力。