Come posso navigare più a fondo in XML e aggiungere i dati in esso
-
23-08-2019 - |
Domanda
Ho caricato XmlDocument in memoria e creato nuove XmlElement. Ora sto cercando di aggiungere XmlElement per il percorso / rapporto / sezione / hosts, ma io non so come. Posso aggiungere facilmente sotto nodo radice di XML ma non riesco a capire come posso traversare livello più profondo in XML e basta aggiungere lì. In pseudo Sto cercando di fare questo:
doc.SelectNodes ( "/ rapporto / sezione / hosts") AppendChild (subroot);.
Il codice:
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");
Soluzione
Prova SelectSingleNode invece di SelectNodes
XmlElement parent = (XmlElement)doc.SelectSingleNode("/report/section/hosts")
parent.AppendChild(subRoot);
Altri suggerimenti
siete quasi arrivati. Provare a utilizzare SelectSingleNode invece:
XmlNode node = doc.SelectSingleNode("/report/section/hosts");
node.AppendChild(subRoot);
Il metodo SelectNodes restituisce un elenco di nodi. Si dovrebbe usare SelectSingleNode invece ...
es. (Parte superiore della mia testa, non prova in Visual Studio)
doc.SelectSingleNode("/report/section/hosts").AppendChild(subRoot);
È necessario ottenere un riferimento a un XmlElement nel tuo documento (diverso da root) da aggiungere a. Ci sono un certo numero di metodi di accessibile XmlDocument come come GetElementById
e SelectSingleNode
che fare questo per voi in modi diversi, la ricerca a piacere.
Detto questo, l'intera API in questo settore è generalmente considerato come un po 'doloroso, hai a disposizione LINQ?