我想知道在Java中表示为DOM文档的XML文档中是否有一种直接的方法来“规范化”XML命名空间定义?
我需要这个的原因是能够比较两个使用XML命名空间的文档。
因为XML命名空间可以在文档中的任何地方指定(在根元素中,在任何元素中)等,当从DOM树的角度来看时,实际上相同的两个文档可能会有很大不同。例如,一个可以在根元素中定义所有命名空间属性,而另一个可以在DOM树层次结构中适用命名空间的“最高”元素定义每个命名空间。从本质上讲,它们可以是相同的文档,但在比较它们时,比如XmlUnit,就会得到比较问题。
提供两个例子:
<root xmlns:foo="http://foo/">
<e1>
<foo:e2>bar</foo:e2>
</e1>
</root>
VS
<root>
<e1 xmlns:foo="http://foo/">
<foo:e2>bar</foo:e2>
</e1>
</root>
这些文档实际上是相同的,但XML比较会发现它们不同。
我想知道是否有一种直接/简单的方法来规范化名称空间定义,比如说,将它们全部放在根元素中?
当然可以自己编写这样的代码,但如果已经可以使用,那就更好了:)