2015-03-16 3 views
0

Мой абонент вручает мне 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), но такого метода нет.

ответ

1

вы можете создать XPath, который описывает позицию узла в старом документе, а затем примените его к новому документу. См. this SO question для подходов, как это сделать.

Если вы можете изменить узел до клонирования, просто придать ему уникальный атрибут, который не сталкивается ни с чем другим (например, сгенерированным случайным образом), который затем можно найти в клонированном документе.

Если у него уже есть идентификатор, просто используйте его.

+0

Thanks; не может делать ничего из этого, но это не вина вашего ответа. :-) Я посмотрю, смогу ли я сделать клонирование выше в этом процессе, чтобы я мог напрямую работать с «Документом». –

Смежные вопросы