0

目前我在 chilkat 中加载 xml 字符串(也测试加载文件)时遇到问题。问题是加载在某些属性中有单引号的 xml 字符串。Chilkat 自动对它们进行 HTML 编码。

例如,当我加载以下字符串时:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <ds:Reference URI="#xpointer(//*[@authenticate='true'])" />
</root>

当使用 .GetXml() 时,Chilkat 会返回这个:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <ds:Reference URI="#xpointer(//*[@authenticate=&apos;true&apos;])" />
</root>

因此,当我必须比较摘要值时,它们不再匹配。

我可以制定一个解决方法来替换这些值,但我对此并不满意。也许属性或其他值的编码更多,这可能会带来更多麻烦。

有人知道这是否是故意的,为什么,或者可能只是一个错误。是否有我必须设置但我没有找到的属性?

谢谢

4

1 回答 1

0

这是预期的行为。(它既是一个 HTML 实体,也是一个 XML 特殊字符。请参阅http://xml.silmaril.ie/specials.html)这在技术上并不正确,但我可以理解为什么一种行为可能优于另一种行为。

在任何情况下,如果您正在散列 XML 并与原始文件进行比较,您真的不想加载 XML 并从 DOM 样式解析器重新发出。空格、缩进和其他 XML 特殊字符可能不同。如果您真的想比较散列,您需要准确的 XML —— 这意味着规范化。您可以使用 Chilkat 规范化 XML。例如,将 XML 复制到这个在线工具中以生成规范化的 XML 以及进行规范化的代码。

于 2018-08-20T21:12:10.890 回答