2012-03-08 19 views
3

J'ai cherché beaucoup d'endroits et vu beaucoup d'exemples, mais je suis toujours incapable d'ajouter des noeuds à mon XML dans les endroits que je veux.Copier l'élément Xml dans un autre document en C#

Voici mon problème:

J'ai un fichier XML qui sera lu par mon programme, dans le but de l'utiliser comme modèle pour mon nouveau fichier XML. Mais comme je l'ai dit, ce "modèle XML" que j'ai créé n'aura que les définitions les plus générales, ce qui signifie que je devrai lire un nœud spécifique de ce modèle, l'ajouter au nouveau xml, créer de nouveaux nœuds et les au nouveau fichier xml

XML modèle:

<A> 
    <B> 
    <c>element 1</c> 
    <d>element 2</d> 
    <e>element 3</e> 
    </B> 
    <B> 
    <c>element 4</c> 
    <d>element 5</d> 
    <e>element 6</e> 
    </B> 
</A> 

Voici le nouveau fichier que je dois créer:

<A> 
    <B> 
    <c>element 7</c> 
    <d>element 8</d> 
    <e>element 9</e> 
    <f>element 10</f> 
    <g>element 11</g> 
    </B> 
<B> 
    <c>element 12</c> 
    <d>element 13</d> 
    <e>element 14</e> 
    <f>element 15</f> 
    <g>element 16</g> 
    </B> 
</A> 

Comme vous pouvez le voir la structure ci-dessous

<A> 
    <B> 
    <c>element 7</c> 
    <d>element 8</d> 
    <e>element 9</e> 
    </B> 
</A> 

Je dois copier depuis mon template xml vers mon nouveau fichier xml, (quel noeud choisir est à la place de l'utilisateur), mais ce noeud spécifique sera copié dans le nouveau xml, alors je devrai ajouter quelques nodes à le noeud que j'ai copié dans le nouveau fichier pour le rendre plus complet. Je vais devoir les ajouter aux balises B. Après avoir été capable de faire cela, j'ai besoin de laisser l'utilisateur continuer à développer ce nouveau fichier XML, en ajoutant plus de nœuds de template et en les empilant entre les balises A. J'ai déjà réussi à copier le noeud du modèle xml et à l'ajouter au nouveau fichier, mais je n'ai pas été en mesure d'ajouter de nouveaux noeuds et je n'ai pas réussi à le faire grandir, à chaque fois que j'en ai B noeud vers le noeud A il souscrit celui d'avant.

Si quelqu'un sait comment me aider je serais très reconnaissant, car aujourd'hui a été mon premier jour en utilisant XML

+0

On ne sait pas à moi ce que vous demandez exactement. Pourriez-vous nous montrer les parties pertinentes de votre code et décrire exactement ce que vous voulez qu'il fasse et ce qu'il fait réellement? – svick

Répondre

2

Je recommande LINQ XML Je pense que ce simple et facile à mettre en œuvre. voici le exampple comment lire XML avec LINQ

XDocument xmlDoc = XDocument.Load(Server.MapPath("XMLFile.xml")); 

    var persons = (from elements in xmlDoc.Descendants("A") 
    where elements.Element("c").Value==//VALUE YOU LOOKING TO GET 
    select new 
    { 
    c = elements.Element("c").Value, 
    d = elements.Element("d").Value, 
    e = elements.Element("e").Value, 
    }).FirstOrDefault(); 
    /// ADD ELEMENT TO ANOTHER XML 

XDocument xmlDoc = XDocument.Load (Server.MapPath ("AnotherXMLFile.xml"));

xmlDoc.Element("A").Add(new XElement("B", new XElement("e", persons.e))); 

et voici un très bon tutoriel

http://www.aspnettutorials.com/tutorials/xml/linq-to-xml-adding-cs.aspx

Questions connexes