У меня есть два документа XML, которые я создал, и я хочу объединить эти два внутри нового конверта. Так что у меняJava, добавляющий документы 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> комбинированные документы </DataSet>
Я попытался создать временный документ и заменить детей корневыми узлами документов:
<DataSet>
<blank/>
<blank/>
</DataSet>
И я надеялся заменить два пробела корневыми элементами двух документов, но я получил «WRONG_DOCUMENT_ERR: Узел используется в другом документе, чем тот, который его создал». Я попытался принять и импортировать корневые узлы, но получаю ту же ошибку.
Не существует ли какой-либо простой способ комбинирования документов без необходимости прочтения и создания новых элементов для каждого узла?
EDIT: фрагменты кода кода Просто перетащите его в «пустой» документ на данный момент ... Функции 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 или просто перечитать документы и создать новые элементы ... Это похоже на работу слишком много, чтобы скомбинировать документы.
Можете ли вы опубликовать пример кода, показывающего, как вы пытаетесь их объединить? – Jonik