Mam dwa dokumenty XML, które utworzyłem i chcę je połączyć w nowej kopercie. Więc mamJava dołączanie dokumentów XML do istniejących dokumentów
<alert-set>
<warning>National Weather Service...</warning>
<start-date>5/19/2009</start-date>
<end-date>5/19/2009</end-date>
</alert-set>
i
<weather-set>
<chance-of-rain type="percent">31</chance-of-rain>
<conditions>Partly Cloudy</conditions>
<temperature type="Fahrenheit">78</temperature>
</weather-set>
Co chciałbym zrobić, to połączyć dwa wewnątrz węzła głównego: < DataSet> łączone docs </DataSet>
mam próbowałem utworzyć dokument tymczasowy i zamienić elementy potomne na węzły główne dokumentów:
<DataSet>
<blank/>
<blank/>
</DataSet>
I miałem nadzieję zastąpić dwa puste elementy pierwiastkami z dwóch dokumentów, ale otrzymałem "WRONG_DOCUMENT_ERR: Węzeł jest używany w innym dokumencie niż ten, który go utworzył." Próbowałem adoptować i importować węzły główne, ale pojawia się ten sam błąd.
Czy istnieje prosty sposób łączenia dokumentów bez konieczności ich odczytywania i tworzenia nowych elementów dla każdego węzła?
EDYCJA: Przykładowe fragmenty kodu Po prostu próbuję przenieść jeden do "pustego" dokumentu ... Funkcje importNode i adoptNode nie mogą importować/adoptować węzłów dokumentów, ale nie mogą importować węzła elementu i jego poddrzewa ... lub jeśli tak, to wydaje się nie działać do uzupełniania/zastępowania nadal.
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));
Wszystkie te rzucić DOMException: WRONG_DOCUMENT_ERR: węzeł jest używany w innym dokumencie niż ten, który go stworzył.
Myślę, że będę musiał wymyślić, jak używać stax lub po prostu ponownie przeczytać dokumenty i stworzyć nowe elementy ... Jednak wydaje się, że zbyt wiele pracy polega na łączeniu dokumentów.
Czy możesz podać przykładowy kod pokazujący, jak próbujesz je połączyć? – Jonik