在属性内将 < 转义为 <

Escaping < to &lt; inside an attribute

我正在将一个 XML 从一个系统转移到另一个系统并只修改几个值。

但是在比较输入和输出时,我可以看到属性的值也已自动更改。

我收到以下具有属性的元素:

<element coding_line="5508&gt;000000000000102608903458255+ 010851630&gt;"/>

但是当我检查我的输出时,它已自动更改为:

<element coding_line="5508>000000000000102608903458255+ 010851630>"/>

我的系统 (WSO2) 似乎 un-escape &gt;>

我现在的问题是 - 这个属性的内容在语义上是否仍然相同?

因为我没有权限更改这个值。当我在 oXygen 中打开文件时,它似乎仍然是有效的 XML。

XML比较:

My Question is now - is the content of this attribute semantically still the same?

是的,XML 属性值中存在文字 > 字符符合规范。

因此,在解析时,这两个 XML 样本代表相同的文档:

<xml attr="&gt;" />

<xml attr=">" />

这个事实,还有很多其他的,比如

  • 属性的源代码顺序没有语义的事实
  • 关于换行符和空格规范化的规则
  • 不同形式的字符表示(数字字符实体与实际字符)
  • 命名空间(不同的前缀、默认命名空间、不同的声明点等)
  • "insignificant whitespace"的概念

因为普通(即面向纯文本的)DIFF 工具在比较 XML 文件时无效。

有专门为 XML 制作的 diff 工具。例如微软有 XML Diff and Patch GUI Tool and there is diffxml or the xmldiff Python package and the XMLunit Java package.