逃脱<到<在属性中

时间:2015-01-08 16:35:35

标签: xml escaping wso2esb

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

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

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

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

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

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

似乎我的系统(WSO2)确实取消了&gt;>的转义。

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

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

XML比较: enter image description here

1 个答案:

答案 0 :(得分:1)

  

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

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

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

<xml attr="&gt;" />

<xml attr=">" />

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

  • 属性的源代码顺序没有语义含义
  • 有关换行和空格规范化的规则
  • 不同形式的字符表示(数字字符实体与实际字符)
  • 名称空间(不同的前缀,默认名称空间,不同的声明点等)
  • &#34;无意义的空白&#34;
  • 的概念

因为正常(即纯文本导向)DIFF工具在比较XML文件时无效。

特别针对XML制作了diff工具。例如,Microsoft拥有XML Diff and Patch GUI Tooldiffxmlxmldiff Python packageXMLunit Java package