Frage

Ich habe XmlDocument in den Speicher geladen und erstellt neue XmlElement. Jetzt versuche ich XmlElement den Pfad / Bericht / Abschnitt / hosts hinzufügen, aber ich weiß nicht, wie. Ich kann es unter Wurzelknoten von XML hinzufügen, leicht, aber ich kann nicht herausfinden, wie kann ich tieferen Ebene in XML navigieren und nur dort anhängen. In Pseudo versuche ich, dies zu tun:

doc.SelectNodes ( "/ Bericht / section / hosts") AppendChild (subroot);.

Der 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");
War es hilfreich?

Lösung

Versuchen SelectSingleNode statt Select

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

Andere Tipps

Sie sind fast da. Versuchen Sie es mit SelectSingleNode statt:

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

Die Select Methode gibt eine Liste von Knoten. Sie sollten SelectSingleNode anstelle ...

z. (Spitze von meinem Kopf, nicht in Visual Studio Test)

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

Sie müssen einen Verweis auf ein XmlElement in Ihrem Dokument (außer der Wurzel) erhalten anhängen zu. Es gibt eine Reihe von Methoden, die auf XmlDocument verfügbar so wie GetElementById und SelectSingleNode die auf unterschiedliche Weise für Sie das tun, Forschung zu schmecken.

Das heißt, die ganze API in diesem Bereich allgemein als ein wenig schmerzhaft angesehen wird, haben Sie LINQ verfügbar?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top