Tôi có hai tài liệu XML mà tôi đã tạo và tôi muốn kết hợp hai tài liệu này bên trong một phong bì mới. Vì vậy, tôi cóJava chắp thêm tài liệu XML vào tài liệu hiện có
<alert-set>
<warning>National Weather Service...</warning>
<start-date>5/19/2009</start-date>
<end-date>5/19/2009</end-date>
</alert-set>
và
<weather-set>
<chance-of-rain type="percent">31</chance-of-rain>
<conditions>Partly Cloudy</conditions>
<temperature type="Fahrenheit">78</temperature>
</weather-set>
Những gì tôi muốn làm là kết hợp hai bên trong một nút gốc: < DataSet> tài liệu kết hợp </DataSet>
Tôi đã đã thử tạo tài liệu tạm thời và thay thế trẻ em bằng các nút gốc của tài liệu:
<DataSet>
<blank/>
<blank/>
</DataSet>
Và tôi đã hy vọng thay thế hai khoảng trống bằng các phần tử gốc của hai tài liệu nhưng tôi nhận được "WRONG_DOCUMENT_ERR: Một nút được sử dụng trong một tài liệu khác với một tài liệu đã tạo nó." Tôi đã thử áp dụng và nhập các nút gốc nhưng tôi nhận được cùng một lỗi.
Không có cách nào dễ dàng kết hợp tài liệu mà không phải đọc qua và tạo các phần tử mới cho mỗi nút?
CHỈNH SỬA: Đoạn mã mẫu Chỉ cần cố di chuyển một đến tài liệu "trống" ngay bây giờ ... Hàm importNode và adoptNode không thể nhập/áp dụng nút Tài liệu, nhưng không thể nhập nút phần tử và cây con của nó ... hoặc nếu có, nó dường như không hoạt động để phụ thêm/thay thế.
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));
Tất cả những ném DOMException: WRONG_DOCUMENT_ERR: Một nút được sử dụng trong một tài liệu khác nhau so với cái mà tạo ra nó.
Tôi nghĩ tôi sẽ phải tìm ra cách sử dụng stax hoặc đọc lại tài liệu và tạo ra các phần tử mới ... Tuy nhiên, dường như quá nhiều công việc chỉ để kết hợp tài liệu.
Bạn có thể đăng mã mẫu cho biết cách bạn đang cố kết hợp chúng không? – Jonik