07 Jun

Poder insertar un nodo de 2º nivel en un xml .net c#

Bueno despues de mucho trasteo y problemas a la hora de volver a grabar el xml he conseguido realizar un método en C# para poder insertar un nodo de 2º nivel (hijo del nodo principal) a un documento xml, esto viene muy bien para los visores de flash que nos bajamos de la red para nuestra web. El código es el siguiente:

public void nodos(string texto,string url,string archivo,string atributo,
string nombrenodo)
{//crea un documento
XmlDocument myXmlDocument = new XmlDocument();
//carga en el docuento creado el archivo que queremos modificar
myXmlDocument.Load(Server.MapPath(archivo));
//creamos un nodo
XmlNode node;
//al nodo le asignamos el nodo raíz del elemento que hemos abierto
node = myXmlDocument.DocumentElement;
//creamos un nodo que inicialmente no esta unido con ningún otro
XmlElement elem = myXmlDocument.CreateElement(nombrenodo);
//insertamos el texto (que hay en la cadena) que queremos que tenga el nodo
elem.InnerText = texto;
//creamos establecemos en ese nodo que no esta unido a nada un atributo
y su valor
elem.SetAttribute(atributo, url);
//hacemos que el nodo elem sea hijo del nodo principal
node.AppendChild(elem);
//guardamos el documento en el mismo sitio que el que cargamos
myXmlDocument.Save(Server.MapPath(archivo)); }

Esta comentado creo que clarito, la llamada al método la podemos realizar así por ejemplo:

nodos("pajaro azul", "./images/pajaro.jpg", "slides.xml", "jpegURL", "slideNode");

Donde :
-“pajaro azul” es el texto que queremos que vaya en el nodo
-“./images/pajaro.jpg” es la ruta de la foto que queremos ver, en este caso está en una carpeta images dentro del directorio raiz
-“slides.xml” es el archivo al que queremos introducirle el nodo. El archivo está en el directorio raiz.
-“jpegURL” es un atributo el cual lleva el valor “./images/pajaro.jpg”
-“slideNode” es el nombre del nodo que queremos insertar.

El resultado al guardar seria algo así:

<Slides>
<slideNode jpegURL="./images/pajaro.jpg">pajaro azul</slideNode>
</Slides>

Hasta aquí ya funcionaria según el resultado anterior, si quisiesemos por ejemplo añadir un atributo mas con su valor correspondiente tendriamos que añadir mas lineas de código como:

//creamos establecemos en ese nodo que no esta unido a nada un atributo y su valor
elem.SetAttribute(a1,a2);

Teniendo en cuenta que tendriamos que poner en la especificacion del método dos atributos más de tipo string que se llame como queremos por ejemplo a1 y a2
Espero que sirva, si hay algún problema y alguien está interesado en modificarlo que lo deje comentado e intentaré ayudar en lo que pueda.

Share this

Comments (1)

Anónimo
17 octubre, 2008 Reply

mae q exlenete, pura vida, me salvo

Leave a reply