2009-08-13 9 views
1

J'ai plusieurs XDocuments qui ressemblent à:fusion de documents XML similaires

<Test> 
    <element 
     location=".\jnk.txt" 
     status="(modified)"/> 
<element 
    location=".\jnk.xml" 
    status="(overload)"/> 
</Test> 

En C#, je crée une nouvelle XDocument:

XDocument mergedXmlDocs = new XDocument(new XElement("ACResponse")); 

Et essayez d'ajouter les noeuds des autres XDocuments:

for (ti = 0; (ti < 3); ++ti) 
{ 
    var query = from xElem in xDocs[(int)ti].Descendants("element") 
     select new XElement(xElem); 

    foreach (XElement xElem in query) 
    { 
     mergedXmlDocs.Add(xElem); 
    } 
} 

Lors de l'exécution, je reçois une erreur sur la façon dont l'ajout créerait un document mal formé.
Qu'est-ce que je fais de mal?
Merci ...

(j'ai vu cette question - Merge XML documents - mais la création d'une transformation XSLT semblait mal à un supplément pour ce qui semble être une opération simple.)

+0

dans quelle langue essayez-vous de faire cela? –

+0

C#. LINQ est disponible ... – Number8

Répondre

4

Vous êtes très proche. Essayer de changer la ligne

mergedXmlDocs.Add(xElem); 

à

mergedXmlDocs.Root.Add(xElem); 

Le problème est que chaque document XML ne peut contenir que 1 nœud racine. Votre code actuel tente d'ajouter tous les nœuds au niveau racine. Vous devez les ajouter au nœud de niveau supérieur existant à la place.

+0

Merci, je n'ai pas assez regardé les propriétés de XDocument ... – Number8

0

Je ne suis pas sûr de ce langage de programmation utilisent, mais pour la plupart des langages de programmation, il existe des classes de support XML étendues. La plupart d'entre elles permettent d'analyser et même d'ajouter des éléments. J'aurais 1 fichier principal que je garderais et ensuite analyserais chaque nouveau en ajoutant les éléments du nouveau dans le maître.

EDIT: Désolé, il semble que vous le fassiez déjà.

+0

C'est ce que j'essaie de faire ... Ajoutez tous les éléments 'element' de plusieurs documents XDocuments au fichier XDocument mergedXmlDocs. L'erreur d'exécution est: "Cette opération créerait un document structuré de manière incorrecte." – Number8

Questions connexes