4

多年来,我一直在使用 NativeXml 从我的程序数据中创建 xml。这工作得很好,但现在我遇到了障碍。

我现在需要在 xml 中插入一个散列,该 xml 是从 xml 的规范形式创建的。我看了一下,Native Xml 有一个“Canonicalize”功能,但要么我没有正确使用它(一个很好的机会),要么(因为它被标记为实验性的)它没有做需要的事情。

我一直在这样使用它(正如我能找到的唯一示例中所建议的那样)

MyXmlFile.Canonicalize;

我一直在毫无问题地将 xml 发送到测试服务,所以我认为一切正常。收件人正在接受 xml 提交和哈希码。Canonicalize 去除了打开的 xml 标记<?xml version="1.0"?>,但由于 xml 的格式非常好,而且我没有将其格式设置为xfReadable我找不到太大的区别。

现在我遇到了一个问题。一项数据表明,一切都没有按应有的方式工作。

如果我的数据中有一个包含撇号的名称,例如 O'Reilly,那么在 xml 中它会像这样(正确地)写入

<Surname>O&apos;Reilly</Surname>

据我所知,它何时被规范化,这应该显示为

<Surname>O'Reilly</Surname>

这没有发生,因此收件人拒绝我的 xml 提交,因为哈希不匹配。

在过去的两天里,我一直在浏览 NativeXml 代码和文档以及在线,但找不到答案。可悲的是,NativeXml 论坛似乎也没有生命。

我应该用 NativeXml 做什么?如果不是 NativeXml,那么还有什么可以做的吗?有什么我可以将xml传递给可以正确规范化它的东西吗?

4

1 回答 1

2

当前版本的 NativeXML (4.07) 从 DTD 中获取命名字符实体并扩展它们。这四个预定义的命名字符实体当然不在任何 DTD 中,因此它们不会被处理。看起来数字字符实体也没有规范化,还有其他几个转换尚未实现。NativeXML 在当前状态下根本不是适合该工作的工具。

于 2013-03-06T17:41:47.373 回答