多年来,我一直在使用 NativeXml 从我的程序数据中创建 xml。这非常有效,但现在我遇到了障碍。
我现在需要将哈希插入到从规范形式的 xml 创建的 xml 中。我看了一下,Native Xml 有一个函数“Canonicalize”,但要么我没有正确使用它(一个很好的机会),要么(因为它被标记为实验性的)它没有做所需的事情。
我一直这样使用它(正如我能找到的唯一示例中所建议的那样)
MyXmlFile.Canonicalize;
我一直在毫无问题地将 xml 发送到测试服务,所以我认为一切正常。收件人正在接受 xml 提交和哈希代码。 Canonicalize 去除开始的 xml 标签 <?xml version="1.0"?>
但由于 xml 的格式相当好,我没有将其格式设置为 xfReadable
我找不到太大的区别。
现在我遇到了一个问题。一项数据表明,一切都没有按预期运行。
如果我的数据中有一个包含撇号的名称,例如 O'Reilly,那么在 xml 中它会被(正确地)这样写
<Surname>O'Reilly</Surname>
据我所知,当它被规范化时,这应该显示为
<Surname>O'Reilly</Surname>
这并没有发生,因此收件人拒绝了我的 xml 提交,因为散列不匹配。
过去两天我一直在浏览 NativeXml 代码和文档,也在网上搜索,但找不到答案。遗憾的是,NativeXml 论坛似乎也没有生气。
我应该使用 NativeXml 做什么?如果不是 NativeXml 那么还有什么可以做的吗?有什么我可以将 xml 传递给以正确规范化它的东西吗?
最佳答案
当前版本的 NativeXML (4.07) 从 DTD 中获取命名字符实体并扩展它们。四个预定义的命名字符实体当然不在任何 DTD 中,因此不处理它们。看起来数字字符实体也没有规范化,还有其他几个转换有待实现。在当前状态下,NativeXML 根本不是适合这项工作的工具。
关于xml - Delphi - 我可以使用 NativeXml 创建规范的 XML 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15252648/