2009-02-13 3 views
0

J'ai chargé XmlDocument en mémoire et créé un nouvel objet XmlElement. Maintenant j'essaye d'ajouter XmlElement au chemin/rapport/section/hosts mais je ne sais pas comment. Je peux l'ajouter facilement sous le nœud racine de XML, mais je n'arrive pas à comprendre comment je peux naviguer dans un niveau plus profond en XML et y ajouter simplement. En pseudo j'essaye de faire ceci:Comment puis-je naviguer plus en profondeur dans XML et y ajouter des données

doc.SelectNodes ("/ report/section/hosts"). AppendChild (subRoot);

Le code:

 XmlDocument doc = new XmlDocument(); 

     doc.Load("c:\\data.xml"); 

     //host 
     XmlElement subRoot = doc.CreateElement("host"); 

     //Name 
     XmlElement ElName = doc.CreateElement("name"); 
     XmlText TxtName = doc.CreateTextNode("text text"); 
     ElName.AppendChild(TxtName); 
     subRoot.AppendChild(ElName); 
     doc.DocumentElement.AppendChild(subRoot); 

     doc.Save("c:\\data.xml"); 

Répondre

2

Essayez SelectSingleNode au lieu de SelectNodes

XmlElement parent = (XmlElement)doc.SelectSingleNode("/report/section/hosts") 
parent.AppendChild(subRoot); 
1

La méthode SelectNodes retourne une liste de nœuds. Vous devez utiliser SelectSingleNode à la place ...

par exemple. (En haut de ma tête, ne pas tester dans Visual Studio)

doc.SelectSingleNode("/report/section/hosts").AppendChild(subRoot); 
0

Vous devez obtenir une référence à un XmlElement dans votre doc (autre que la racine) à ajouter à. Il ya a number of methods disponible sur XmlDocument tels que GetElementById et SelectSingleNode qui le font pour vous de différentes manières, la recherche au goût. Cela dit, l'ensemble de l'API dans ce domaine est généralement considéré comme un peu douloureux, avez-vous LINQ disponible?

1

Vous y êtes presque. Essayez d'utiliser SelectSingleNode à la place:

XmlNode node = doc.SelectSingleNode("/report/section/hosts"); 
node.AppendChild(subRoot); 
Questions connexes