4

我想知道是否有一种直接的方法可以在表示为 Java 中的 DOM 文档的 XML 文档中“规范化”XML 命名空间定义?

我需要这个的原因是能够比较两个文档,它们都使用 XML 命名空间。

由于 XML 命名空间可以在文档的任何位置(在根元素中,在任何元素中)等处指定,因此从 DOM 树的角度来看,实际上相同的两个文档可能会有很大的不同。例如,一个可以在根元素中定义所有命名空间属性,而另一个可以在命名空间适用的 DOM 树层次结构中的“最高”元素中定义每个命名空间。本质上,这些可以是相同的文档,但是在比较它们时,比如用 XmlUnit,就会出现比较问题。

举两个例子:

<root xmlns:foo="http://foo/">
    <e1>
        <foo:e2>bar</foo:e2>
    </e1>
</root>

与:

<root>
    <e1 xmlns:foo="http://foo/">
        <foo:e2>bar</foo:e2>
    </e1>
</root>

这些文档实际上是相同的,但是通过 XML 比较会发现它们不同。

我想知道是否有一种直接/简单的方法来规范命名空间定义,例如,将它们全部放在根元素中?

当然可以自己编写这样的代码,但如果这已经可用,那就更好了:)

4

1 回答 1

4

XOM API有一个Canonicalizer用于此目的。它不是标准的 W3C DOM API,但也许它可以满足您的需求。

于 2012-05-11T14:28:46.717 回答