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");
È stato utile?

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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top