给定节点,如何在文档中选择等效的节点?

时间:2015-03-16 19:59:20

标签: java xml dom

我的来电者正在向我发送org.w3c.dom.Nodeorg.w3c.dom.Document作为其owner document。换句话说,提供的Node保证在提供的Document中成为父级,并代表Node中应该执行某些工作的Document。< / p>

我现在处于需要有效克隆Document的位置(我需要执行修改,并且无法修改源。)

显然,如果我这样做,我手中的Node并非由克隆产生的新Document所拥有。我现在已经有效地丢失了克隆Document中的选择。

但是,我知道克隆文档中会有Node与我手中的Node完全相同。我需要找到它。

实现这一目标的最佳方法是什么,除了翻阅整个Document并在每个人上调用isEqualNode(Node)之外?

我想也许会有某种方式说document.find(myUnparentedNode),但不存在这样的方法。

1 个答案:

答案 0 :(得分:1)

您可以生成一个XPath,用于描述旧文档中节点的位置,然后将其应用于新文档。有关如何执行此操作的方法,请参阅this SO question

如果您可以在克隆之前修改节点,只需为其提供一个不会与其他任何内容发生冲突的唯一属性(例如随机生成),然后您就可以在克隆文档中找到它。

如果它已经有id,请使用它。