Insertando nodos en un XML
Febrero 20, 2008
Tratar XML con el framework .NET 2.0 tiene cierto grado de complejidad debido a que el api System.Xml es demasiado granular en funcionalidad. En días recientes nos enfretamos a la siguiente situación. ¿Cómo agregar subnodos a un nodo dentro de un XML ya existente? Por ejemplo,tenemos el siguiente XML:
<?xml version=”1.0″ encoding=”UTF-8″ ?>
<numbers>
<primes>
<prime>
<length>1</length>
<value>3</value>
</prime><prime>
<length>2</length>
<value>37</value>
</prime>
<prime>
<length>3</length>
<value>479</value>
</prime>
</primes>
</numbers>
Y queremos agregar subnodos “prime” a nodo “primes”. Asumiendo que tenemos el XML en un objeto DOM (XmlDocument) sería de la siguiente manera:
//Selección del Xpath donde queremos insertar los subnodos
XmlNode nodo = objXml.SelectSingleNode(“/numbers/primes”);
//Creación del subnodo
XmlElement elmNodo = objLlave.CreateElement(“length”);
XmlText elmTextoNodo = objLlave.CreateTextNode(“4″);
XmlElement elmValor = objLlave.CreateElement(“value”);
XmlText elmTextoValor = objLlave.CreateTextNode(“1019″);
//Creamos el subnodo
XmlElement elmPrime = objLlave.CreateElement(“prime”);
//Agregamos los valores al subnodo
elmPrime .AppendChild(elmNodo);
elmPrime .LastChild.AppendChild(elmTextoNodo);
elmPrime .AppendChild(elmValor);
elmPrime .LastChild.AppendChild(elmTextoValor);
//Agregamos el subnodo al nodo del xml
nodo.AppendChild(elmPrime);
Con lo cual el nuevo XML quedaría de la siguiente manera:
<?xml version=”1.0″ encoding=”UTF-8″ ?>
<numbers>
<primes>
<prime>
<length>1</length>
<value>3</value>
</prime><prime>
<length>2</length>
<value>37</value>
</prime>
<prime>
<length>3</length>
<value>479</value>
</prime>
<prime>
<length>4</length>
<value>1019</value>
</prime>
</primes>
</numbers>