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>
Limpiando tu solución en Visual Studio
Febrero 17, 2008
Desde que empece a desarrollar en Visual Studio 2003, y desde hace un par de años con Visual Studio 2005, vengo sufriendo problemas derivados de una mala gestión del IDE con los ficheros temporales en el desarrollo de sitios Web. Por lo general sabes que es problema de estos ficheros cuando al compilar alguna clase que tienes bien referenciada pareciera que no esta ahí o que el código al que haces refencia en tiempo de compilación no coincide con el de tu proyecto. Entonces entras en un bucle de compilar, recompilar, abrir y cerrar el Visual Studio, etc., etc., etc.
La mejor alternativa es cerrar el Visual Studio y limpiar todos los ficheros asociados a la compilación:
- las carpetas bin y obj de los proyectos
- la carpeta asociada a tu sitio Web en la carpeta de instalación del framework (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files)
- la carpeta Web Cache en %USERPROFILE% (sólo para VS 2003)
Una vez finalizado este proceso deberás abrir la solución y recompilar. Esperemos que en la versión 2008 no haya necesidad de hacer esto.