Question

Je l'ai chargé XmlDocument en mémoire et créé de nouvelles XmlElement. Maintenant, je suis en train d'ajouter XmlElement au chemin / rapport / section / hosts mais je ne sais pas comment. Je peux ajouter facilement en dessous de nœud racine de XML, mais je ne peux pas comprendre comment puis-je naviguer plus profondément en XML et ajoutez juste là. En pseudo Je suis en train de faire ceci:

doc.SelectNodes ( "/ rapport / section / hosts") appendChild (Sous-répertoire).

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");
Était-ce utile?

La solution

Essayez SelectSingleNode au lieu de SelectNodes

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

Autres conseils

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

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

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

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

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

Vous devez obtenir une référence à un XmlElement dans votre doc (autre que la racine) à ajouter à. Il y a un certain nombre de méthodes disponibles sur XmlDocument tels comme GetElementById et SelectSingleNode qui font cela pour vous de différentes manières, de la recherche au goût.

Cela dit, toute l'API dans ce domaine est généralement considéré comme un peu douloureux, avez-vous LINQ disponible?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top