Pregunta

He cargado XmlDocument en la memoria y creado nuevas XmlElement. Ahora estoy tratando de añadir XmlElement a la ruta / informe / sección / hosts, pero no sé cómo. Puedo añadir fácilmente por debajo del nodo raíz XML pero no puedo averiguar cómo puedo navegar nivel más profundo en XML y simplemente añadir allí. En seudo que estoy tratando de hacer esto:

doc.SelectNodes ( "/ report / sección / hosts") AppendChild (subroot);.

El código:

        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");
¿Fue útil?

Solución

Trate SelectSingleNode en lugar de SelectNodes

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

Otros consejos

Usted está casi allí. Trate de usar SelectSingleNode lugar:

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

El método SelectNodes devuelve una lista de nodos. Debe utilizar SelectSingleNode lugar ...

por ejemplo. (Parte superior de la cabeza, no prueba en Visual Studio)

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

Usted necesita obtener una referencia a un XmlElement en su documento (que no sea la raíz) para anexar. Hay una serie de métodos disponibles en XmlDocument tales como GetElementById y SelectSingleNode el que lo haga por usted de diferentes maneras, la investigación al gusto.

Dicho esto, todo el API en esta zona es generalmente considerado como un poco doloroso, ¿tiene LINQ disponibles?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top