У меня есть два документа XML, которые я создал, и я хочу объединить эти два в новом конверте. Итак, у меня есть
<alert-set>
<warning>National Weather Service...</warning>
<start-date>5/19/2009</start-date>
<end-date>5/19/2009</end-date>
</alert-set>
и
<weather-set>
<chance-of-rain type="percent">31</chance-of-rain>
<conditions>Partly Cloudy</conditions>
<temperature type="Fahrenheit">78</temperature>
</weather-set>
То, что я хотел бы сделать, это объединить два в корневом узле: комбинированные документы
Я пытался создать временный документ и заменить дочерние узлы корневыми узлами документов:
<DataSet>
<blank/>
<blank/>
</DataSet>
И я надеялся заменить два пробела корневыми элементами двух документов, но я получил «WRONG_DOCUMENT_ERR: узел используется в документе, отличном от того, который его создал» Я попытался принять и импортировать корневые узлы, но я получил ту же ошибку.
Не существует ли простого способа объединения документов без необходимости читать и создавать новые элементы для каждого узла?
РЕДАКТИРОВАТЬ: образец кода фрагменты
Просто пытаясь переместить одну в «пустой» документ на данный момент ... Функции importNode и acceptNode не могут импортировать / принимать узлы Document, но они не могут импортировать узел элемента и его поддерево ... кажется, не работает для добавления / замены до сих пор.
Document xmlDoc; //created elsewhere
Document weather = getWeather(latitude, longitude);
Element weatherRoot = weather.getDocumentElement();
Node root = xmlDoc.getDocumentElement();
Node adopt = weather.adoptNode(weatherRoot);
Node imported = weather.importNode(weatherRoot, true);
Node child = root.getFirstChild();
root.replaceChild(adopt, child); //initially tried replacing the <blank/> elements
root.replaceChild(imported, child);
root.appendChild(adopt);
root.appendChild(imported);
root.appendChild(adopt.cloneNode(true));
Все они генерируют исключение DOMException: WRONG_DOCUMENT_ERR: узел используется в документе, отличном от того, который его создал.
Думаю, мне придется выяснить, как использовать stax или просто перечитать документы и создать новые элементы ... Хотя это просто слишком сложная работа для объединения документов.