Как вставить содержимое XmlCursor в документ DOM

StackOverflow https://stackoverflow.com/questions/83159

  •  01-07-2019
  •  | 
  •  

Вопрос

Некоторые API возвращают мне XmlCursor, указывающий на корень XML-документа.Мне нужно вставить все это в другой документ, представленный org.w3c.DOM.

В начале:XmlCursor указывает на

<a> <b> some text </b> </a>

DOM-документ:

<фу>

</foo>

В конце я хочу изменить исходный документ DOM следующим образом:

<фу>

<someOtherInsertedElement>

u003Ca>u003Cb>немного текстаu003C/b>u003C/a>

</someOtherInsertedElement>

</foo>

ПРИМЕЧАНИЕ: document.importNode(cursor.getDomNode()) не работает - выдается исключение: НЕ_SUPPORTED_ERR:Реализация не поддерживает запрошенный тип объекта или операции.

Это было полезно?

Решение

Попробуйте что-то вроде этого:

Node originalNode = cursor.getDomNode();
Node importNode = document.importNode(originalNode.getFirstChild());
Node otherNode = document.createElement("someOtherInsertedElement");
otherNode.appendChild(importNode);
document.appendChild(otherNode);

Другими словами:

  1. Получите узел DOM от курсора.В данном случае это DOMDocument, поэтому выполните getFirstChild(), чтобы получить корневой узел.
  2. Импортируйте его в DOMDocument.
  3. Делайте другие вещи с помощью DOMDocument.
  4. Добавьте импортированный узел к правому узлу.

Причина импорта заключается в том, что узел всегда «принадлежит» данному DOMDocument.Простое добавление исходного узла вызовет исключения.

Другие советы

У меня была та же проблема.

Это не удалось:

Node importNode = document.importNode(originalNode);

Это решило проблему:

Node importNode = document.importNode(originalNode.getFirstChild());

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top