我知道在XML中属性的顺序不重要,但是在我的特殊情况下,我确实需要与原始XML文档的顺序一致(例如,正确验证某些XML签名)。

在获取原始文档的某个节点并将该节点的副本添加到新创建的文档时,我遇到了一些问题。问题是我要在原始节点上签名,该节点在version属性之前声明了一个名称空间,但是当我再次从代码的其他部分检索该节点时,版本和名称空间声明属性的顺序就会改变。我希望它们与原始版本保持一致,因为我需要验证签名。这是现在正在发生的事情:

原始签署文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><ns0:CF xmlns:ns0="http://someurl.com" version="1.0">
    <ns0:EF>...


要从原始文档进行验证的节点:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><ns0:CF version="1.0" xmlns:ns0="http://someurl.com">
    <ns0:EF>...


我需要保持version和xmlns属性的顺序,就像它们出现在原始文档中一样。

我已经尝试了很多东西,但是似乎都没有用……谢谢您,请原谅我的英语!

最佳答案

您可以尝试使用DecentXML:
https://code.google.com/p/decentxml/

我曾经用它来实现一个配置工具,该工具必须在不更改现有格式的情况下更新现有XML,并且必须以对人类友好的顺序输出属性。就我而言,它工作得很好。

09-30 16:55