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

时间:2013-03-06 16:22:03

标签: xml delphi nativexml

我多年来一直在使用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来正确规范它?

1 个答案:

答案 0 :(得分:2)

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