Modificar y borrar datos XML

30. October 2009 21:50 by Oscar.SS in XML  //  Tags:   //   Comments (2)

En los artículos anteriores vimos como leer, escribir e insertar datos en un archivo XML. Aquí veremos como modificar (o remplazar) y borrar un nodo de nuestro XML.

De esta forma quedan cubiertas todas las acciones que se pueden realizar sobre nuestros registros en documentos XML. Recordaros como siempre que el código hace referencia al archivo XML que utilizamos en el primer artículo de esta serie.

El código que aquí veremos se puede utilizar tanto para modicar un nodo como para borrarlo, tan solo con una leve diferencia. Cuando sea el momento, veremos en que consiste esta pequeña diferencia.

Pasemos a las explicaciones. Los objetos XmlDocument, XmlElement y XmlNode disponen de dos métodos que nos permitirán realizar la modificación y la eliminación del nodo deseado. Estos métodos son:

  • ReplaceChild(nodoNew, nodoOld). Reemplaza el nodo existente por el nodo con los nuevos datos.
  • RemoveChild(nodoOld). Elimina un nodo permanentemente.

Estos métodos actuan sobre los nodos secundarios del objeto que realiza la llamada. Por lo tanto, el "truco" consiste en posicionarse en el árbol del XML sobre el nodo padre del nodo que pretendemos actualizar, reemplazar o borrar.

El código que a continuación veremos hace uso del método secundario CrearNodoXml() que ya vimos en al artículo "Insertar datos XML". Recordar que este método devuelve un objeto XmlNode de tipo "empleado" devidamente construido.

public void ModificarDatosXml(string id, string nom, string ape, string nss, string fijo, string mvl)
        {
            
//Cargamos el documento XML.
            
documento = new XmlDocument();
            
documento.Load(Ruta);

            
//Obtenemos el nodo raiz del documento.
            
XmlElement empleados documento.DocumentElement;

            
//Obtenemos la lista de todos los empleados.
            
XmlNodeList listaEmpleados documento.SelectNodes("empleados/empleado");

            foreach 
(XmlNode item in listaEmpleados)
            {
                
//Determinamos el nodo a modificar por medio del id de empleado.
                
if (item.FirstChild.InnerText == id)
                {
                    
//Nodo sustituido.
                    
XmlNode nodoOld item;

                    
//Nodo nuevo.
                    
XmlNode nodoNew CrearNodoXml(id, nom, ape, nss, fijo, mvl);

                    
//Remplazamos el nodo.
                    
empleados.ReplaceChild(nodoNew, nodoOld);

                    
//Borrar un nodo.
                    //empleados.RemoveChild(nodoOld);
                
}
            }

            
//Salvamos el documento.
            
documento.Save(Ruta);
        
}

Comments (2) -

froylan
froylan
11/25/2011 7:04:17 PM #

en el caso que quisiera eliminar desde un CommandField eliminar de un gridview como seria ???

froylan
froylan
11/26/2011 12:19:51 AM #

lo estoy haciendo de esta manera pero no se !! tengo este error me podrian ayudar!

Error  1  No se puede utilizar como método el miembro 'System.Web.UI.WebControls.GridView.SelectedValue' no invocable.  C:\Users\froy\Documents\Visual Studio 2010\WebSites\Estudiantes\Estudiantes.aspx.cs  83  55  C:\...\Estudiantes\

y tambien tengo el error que no me reconose (krnet, nom, ape, fech, tel, dir, mail) dice que no existen en el contexto actual!


foreach (XmlNode item in listaEmpleados)
        {
            int codigo = Convert.ToInt32(this.GridView1.SelectedValue);
            //Determinamos el nodo a modificar por medio del id de empleado.
          
            if (item.FirstChild.InnerText = codigo)
            {
                //Nodo sustituido.
                XmlNode nodoOld = item;

                //Nodo nuevo.
                XmlNode nodoNew = CrearNodoXml(krnet, nom, ape, fech, tel, dir, mail);

                //Remplazamos el nodo.
                estudiante.ReplaceChild(nodoNew, nodoOld);

                //Borrar un nodo.
                //empleados.RemoveChild(nodoOld);
            }
        }

Recent Comments

Comment RSS

Month List