Delphi – 我可以使用NativeXml创建规范XML吗?

多年来我一直在使用NativeXml从我的程序数据创建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来正确规范它?

最佳答案 当前版本的NativeXML(4.07)从DTD中获取命名字符实体并对其进行扩展.当然,四个预定义的命名字符实体不在任何DTD中,因此它们不会被处理.看起来数字字符实体也不是规范化的,还有其他几个转换尚未实现. NativeXML在当前状态下不是正确的工具.

点赞