给定一个节点,我如何 select 文档中的等效节点?

Given a Node, how can I select the equivalent Node in a Document?

我的来电者递给我一个 org.w3c.dom.Node 和一个 org.w3c.dom.Document 作为它的 owner document。换句话说,所提供的 Node 保证在所提供的 Document 中是父级的,并且代表 Document 中的 Node 应该执行一些工作。

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

显然,如果我这样做,我手中的 Node 不属于克隆产生的新 Document。我现在实际上已经失去了克隆 Document.

中的选择

但是,我知道那个克隆文档中会有一个 Node 正好等于我手上的 Node。我需要找到它。

除了遍历整个 Document 并在每个 isEqualNode(Node) 上调用 isEqualNode(Node) 之外,最好的方法是什么?

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

您可以生成一个描述节点在旧文档中位置的 XPath,然后将其应用于新文档。请参阅 this SO question 了解如何做到这一点。

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

如果它已经有一个 id,就使用它。