Wie kann ich tiefer in XML navigieren und Daten anhängen darin
-
23-08-2019 - |
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");
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?