我多年来一直在使用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来正确规范它?
答案 0 :(得分:2)
当前版本的NativeXML(4.07)从DTD中提取命名字符实体并展开它们。当然,四个预定义的命名字符实体不在任何DTD中,因此它们不会被处理。看起来数字字符实体也不是规范化的,还有其他几个转换尚未实现。 NativeXML在当前状态下不适合作业。