【问题标题】:Given a Node, how can I select the equivalent Node in a Document?给定一个节点,如何在文档中选择等效的节点?
【发布时间】:2015-05-19 02:25:35
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: java xml dom


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢;不能做任何这些事情,但这不是你回答的错。 :-) 我会看看我是否可以在这个过程中将克隆提高到更高的水平,这样我就可以直接在Document 上工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    相关资源
    最近更新 更多