El Blog de Óscar Sotorrío Sánchez - MCP Application Development Foundation - C#

Todo lo que vaya aprendiendo de .NET, C#, ASP.NET, SQL Server, etc, lo compartiré con vosotros.

El autor:

Óscar Sotorrío Sánchez
Contacto Send mail

Encuéntralo

Álguien dijo...


Aquel que quiera cambiar el mundo debe empezar por cambiarse a si mismo.

Socrates

Insertar datos XML

Anteriormente vimos como leer datos y escribir datos en un archivo XML. Ahora vamos a mostrar como insertar un nodo o registro en cualquier lugar del árbol de nodos del archivo XML. 

Aunque comenzaremos viendo como insertar un nodo al final de un archivo, que es la operación más habitual, luego veremos como insertar un registro de forma más controlada.

Dado que las clases que vamos a utilizar para este ejemplo ya fuerón explicadas anteriormente recomiendo a todo el mundo que lean en primer lugar los artículos precedentes. Además el modelo de archivo XML es el mismo que en los ejemplos anteriores.

En primer lugar crearemos el nodo que deseamos insertar.

 

      private XmlNode CrearNodoXml(string id, string nom, string ape, string nss, string fijo, string mvl)
      {
         
//Creamos el nodo que deseamos insertar.
         
XmlElement empleado documento.CreateElement("empleado");

         
//Creamos el elemento idEmpleado.
         
XmlElement idEmpleado documento.CreateElement("idEmpleado");
         
idEmpleado.InnerText id;
         
empleado.AppendChild(idEmpleado);

         
//Creamos el elemento nombre.
         
XmlElement nombre documento.CreateElement("nombre");
         
nombre.InnerText nom;
         
empleado.AppendChild(nombre);

         
//Creamos el elemento apellidos.
         
XmlElement apellidos documento.CreateElement("apellidos");
         
apellidos.InnerText ape;
         
empleado.AppendChild(apellidos);

         
//Creamos el elemento numeroSS.
         
XmlElement numeroSS documento.CreateElement("numeroSS");
         
numeroSS.InnerText nss;
         
empleado.AppendChild(numeroSS);

         
//Creamos el elemento telefonos.
         
XmlElement telefonos documento.CreateElement("telefonos");
         
empleado.AppendChild(telefonos);

               
//Creamos el elemento fijo.
               
XmlElement nodoFijo documento.CreateElement("fijo");
               
nodoFijo.InnerText fijo;
               
telefonos.AppendChild(nodoFijo);
               
//Creamos el elemento movil.
               
XmlElement movil documento.CreateElement("movil");
               
movil.InnerText mvl;
               
telefonos.AppendChild(movil);

         return 
empleado;
      
}

 

Una vez que tenemos el nodo creado procedemos a insertar un registro al final del documento XML.

 

      private void InsertarXml()
      {
         
//Cargamos el documento XML.
         
documento = new XmlDocument();
         
documento.Load(ruta);

         
//Creamos el nodo que deseamos insertar.
         
XmlNode empleado = this.CrearNodoXml("4""Gerardo""Montaz Soaz""444-444-444-444""893434220""609334209");

         
//Obtenemos el nodo raiz del documento.
         
XmlNode nodoRaiz documento.DocumentElement;

         
//Insertamos el nodo empleado al final del archivo
         
nodoRaiz.InsertAfter(empleado, nodoRaiz.LastChild);   //***

         
documento.Save(ruta);
      
}

Ahora nos fijamos en la función anterior justo en la linea que esta marcada con //*** . Esta linea es la que inserta el nodo precisamente a

continuación del último nodo del documento XML. Como hemos comentado antes esta es la operación más usual pero existen más opciones.

 

  •  Insertar antes del último nodo del documento.
         nodoRaiz.InsertBefore(empleado, nodoRaiz.LastChild);
  • Insertar después del primer nodo del documento.
         nodoRaiz.InsertAfter(empleado, nodoRaiz.FirstChild);
  • Insertar antes del primer nodo del documento.
         nodoRaiz.InsertBefore(empleado, nodoRaiz.FirstChild);
  • Insertar en un lugar determinado del documento.
      nodoRaiz.InsertAfter(empleado, documento.SelectNodes("empleados/empleado").Item(2)); 
En este último caso hay que tener en cuenta que el método Item() accede a la colección de nodos del documento, y esta colección tiene
un índice inicial igual acero. En el ejemplo, hemos insertado el nodo después del elemento 2 de la colección, pero podíamos haberlo insertado 
antes con InsertBefore().


Descargar código:InsertarXML.rar (22,83 kb)

Categories: XML
Posted by Oscar.SS on domingo, 26 de abril de 2009 5:47
Permalink | Comentarios (15) | Post RSSRSS comment feed

Comentarios

Añadir comentario


 

  Country flag

biuquote
  • Comentario
  • Vista previa
Loading