更改xmlns属性的顺序

时间:2014-04-09 14:00:09

标签: java xml xml-namespaces

我知道在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>...

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

我尝试过很多东西但是它们似乎都没有用...谢谢你,原谅我的英语!

1 个答案:

答案 0 :(得分:0)

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

我用过一次来实现一个配置工具,它必须更新现有的XML而不改变现有的格式,并且必须以人性化的顺序输出属性。在我的案例中它运作得很好。

相关问题