У меня есть два документа 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>
Что я хотел бы сделать, это объединить два в корневом каталоге node: <DataSet> комбинированные документы </Набор данных >
Я попытался создать временный документ и заменить дочерние узлы корневыми узлами документов:
<DataSet>
<blank/>
<blank/>
</DataSet>
И я надеялся заменить два пробела корневыми элементами двух документов, но я получил "WRONG_DOCUMENT_ERR: A node используется в другом документе, чем тот, который его создал". Я попытался принять и импортировать корневые узлы, но получаю ту же ошибку.
Нет ли простого способа комбинирования документов без необходимости чтения и создания новых элементов для каждого node?
EDIT: примеры фрагментов кода Просто попробуйте переместить его в "пустой" документ на данный момент... Функции importNode и acceptNode не могут импортировать/принимать узлы Document, но они не могут импортировать элемент node и его поддерево... или если это так, он, похоже, не работает для добавления/замены.
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: A node используется в другом документе, чем тот, который его создал.
Я думаю, мне нужно выяснить, как использовать stax или просто перечитать документы и создать новые элементы... Это похоже на работу слишком много, чтобы объединять документы.