J'ai deux documents XML que j'ai créés et je veux les combiner dans une nouvelle enveloppe. J'ai doncJava ajoutant des documents XML à des documents existants
<alert-set>
<warning>National Weather Service...</warning>
<start-date>5/19/2009</start-date>
<end-date>5/19/2009</end-date>
</alert-set>
et
<weather-set>
<chance-of-rain type="percent">31</chance-of-rain>
<conditions>Partly Cloudy</conditions>
<temperature type="Fahrenheit">78</temperature>
</weather-set>
Ce que je voudrais faire est de combiner les deux dans un nœud racine: < DataSet> docs combinés </DataSet>
J'ai essayé de créer un document temporaire et de remplacer les enfants par les nœuds racine des documents:
<DataSet>
<blank/>
<blank/>
</DataSet>
Et j'espérais remplacer les deux espaces vides par les éléments racine des deux documents mais j'obtiens "WRONG_DOCUMENT_ERR: Un noeud est utilisé dans un document différent de celui qui l'a créé." J'ai essayé d'adopter et d'importer les noeuds racine mais j'ai la même erreur.
N'existe-t-il pas un moyen simple de combiner des documents sans avoir à lire et créer de nouveaux éléments pour chaque nœud? Essayez simplement d'en déplacer un vers le document "vide" pour l'instant ... Les fonctions importNode et adoptNode ne peuvent pas importer/adopter des noeuds Document, mais ils ne peuvent pas importer le noeud d'élément et son sous-arbre ... ou si c'est le cas, il ne semble pas fonctionner pour ajouter/remplacer encore.
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));
Tous ces jeter le DOMException: WRONG_DOCUMENT_ERR: Un nœud est utilisé dans un autre document que celui qui l'a créé.
Je pense que je vais devoir comprendre comment utiliser stax ou juste relire les documents et créer de nouveaux éléments ... Cela semble un peu trop de travail pour combiner des documents, cependant.
Pouvez-vous publier un exemple de code montrant comment vous essayez de les combiner? – Jonik