Cómo: Modificar datos XML utilizando DOM en .NET Framework con Visual C# .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 317666 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo paso a paso describe cómo utilizar la clase System.Xml.XmlDocument y clases relacionadas para modificar documentos XML mediante programación.

Contenido XML se puede clasificar ampliamente en una colección de nodos y atributos de los nodos. Puede modificar el contenido modificando los nodos o los atributos. La clase System.Xml.XmlDocument implementa el Analizador de XML Document Object Model (DOM) de núcleo de Microsoft .NET Framework. Esta clase es compatible con los estándares de nivel 2 principales y World Wide Web Consortium (W3C) Document Object Model (DOM) Level 1. Puede utilizar la implementación del modelo DOM para modificar el contenido de documentos XML; por ejemplo, insertar, actualizar o eliminar datos.

Requisitos

En la lista siguiente se describe el hardware, el software, la infraestructura de red y los Service Packs recomendados que necesitará:
  • Microsoft Windows XP, Windows 2000 o Windows NT 4.0 Service Pack 6a
  • Microsoft Data Access Components (MDAC) 2.6 o posterior
  • Microsoft Visual Studio .NET
En este artículo se supone que está familiarizado con los temas siguientes:
  • Sintaxis de Visual C# .NET
  • XML y estándares relacionados

Métodos y propiedades de clases de System.Xml

La lista siguiente describen varios métodos y propiedades de clases de System.XML . Para obtener más información, consulte la documentación del Kit de desarrollo de software (SDK) de Microsoft .NET Framework.
  • datos XML de actualización:

    Utilice el InnerText y las propiedades InnerXml de clases como XmlDocument , XmlElement o XmlAttribute para modificar el contenido. Dado que estas clases se derivan de la clase System.Xml.XmlNode , estas clases heredan varias propiedades y métodos de la clase XmlNode . InnerXml proporciona acceso al contenido incluido el marcado. Puede utilizar la propiedad Value para establecer el valor de un nodo; lo que se modifica depende de tipo del nodo. Puede utilizar la propiedad prefix para establecer el prefijo de espacio de nombres de un nodo.
  • Agregar nuevos datos XML:

    Utilice métodos PrependChild y la AppendChild para agregar un nodo al final o al principio de la lista de elementos secundarios. De forma similar, puede utilizar el método InsertAfter o InsertBefore para agregar un nodo después o antes del nodo actual, respectivamente. Además, puede utilizar métodos de la clase XmlDocument que comienzan con el prefijo de crear , como CreateElement , CreateAttribute y CreateWhitespace , para crear contenido nuevo.

    Normalmente, crear los elementos necesarios y, a continuación, agregar los nuevos elementos a los datos XML existentes. En lugar de crear todo el contenido nuevo, puede utilice el método Clone o el método CloneNode para copiar nodos existentes y, a continuación, modificar los datos antes de agregar los nodos modificados en el árbol como nuevo contenido.
  • datos XML de eliminar:

    Puede utilizar el método RemoveChild de XmlDocument o la clase XmlElement para quitar un nodo secundario específico o un atributo. Puede utilizar el método RemoveAll del XmlDocument o XmlElement para quitar todos los nodos secundarios o atributos. Puede eliminar atributos mediante uno de los siguientes métodos de XmlElement :
    • RemoveAllAttributes
    • RemoveAttribute
    • RemoveAttributeAt
    • RemoveAttributeNode
Nota : antes de eliminar o modificar un nodo o un atributo, puede que tenga que se va a buscar o para seleccionar el nodo requerido o nodos. La clase XmlDocument proporciona varios métodos y propiedades para buscar los nodos. Para obtener información adicional, haga clic en el número de artículo siguiente para ver el artículo en Microsoft Knowledge Base:
317664Cómo: Obtener acceso a datos XML mediante DOM en .NET Framework con Visual C# .NET

Crear el ejemplo de Visual C# .NET

En el siguiente ejemplo de código paso a paso muestra cómo utilizar algunos de los métodos que se describen en este artículo para modificar datos XML:
  1. En el Bloc de notas o un editor de texto similar, cree un nuevo archivo XML con los siguientes datos y, a continuación, guarde el archivo como C:\Q317666.xml:
    <?xml version='1.0' encoding='ISO-8859-1'?>
    <Collection>
       <Book Id='1'>
          <Title>Principle of Relativity</Title>
          <Author>Albert Einstein</Author>
          <Genre>Physics</Genre>
       </Book>
       <Book Id='2'>
          <Title>Cosmos</Title>
          <Author>Carl Sagan</Author>
          <Genre>Cosmology</Genre>
       </Book>
    </Collection>
    					
  2. Siga estos pasos para crear un nuevo proyecto de aplicación de consola de Visual C#. NET:
    1. Inicie Microsoft Visual Studio NET..
    2. En el menú archivo , seleccione nuevo y, a continuación, haga clic en proyecto .
    3. En el cuadro de diálogo Nuevo proyecto , haga clic en Proyectos de Visual C# en Tipos de proyecto y, después, haga clic en Aplicación de consola en plantillas .
  3. Reemplace el código en el archivo Class1.cs con el siguiente código:
    using System;
    using System.Xml;
    using System.Text;
    
    namespace ConsoleApplication1
    {
       class Class1
       {
          [STAThread]
          static void Main(string[] args)
          {
             try
             {
                // Create an XML document instance, and load XML data.
                XmlDocument doc  = new XmlDocument();
                doc.Load("Q317666.xml");                      // This code assumes that the XML file is in the same folder.
    
                // I. Modification
                // 1. Increment all of the Book Id attribute values by 100.
                XmlNodeList nodeList = doc.SelectNodes("//Book");
                foreach (XmlNode node in nodeList)
                   node.Attributes["Id"].Value = (Int32.Parse(node.Attributes["Id"].Value) + 100).ToString();
    
                // 2. Change the book titles to uppercase letters.
                foreach (XmlNode node in nodeList)
                   node.FirstChild.InnerText = (node.FirstChild.InnerText).ToUpper();
    
                // 3. Modify the XML declaration instruction to have Unicode encoding.
                XmlDeclaration decl = (XmlDeclaration) doc.FirstChild;
                decl.Encoding = "UTF-16";
    
                // II. Addition
                // 1. Create a new Book element.
                XmlElement newElem = doc.CreateElement("Book");
    
                // Add the Id attribute.
                XmlAttribute newAttr = doc.CreateAttribute("Id");
                newAttr.Value = "103";
                newElem.Attributes.Append(newAttr);
    
                // Create the child nodes. This code demonstrates various ways to add them.
                newElem.InnerXml = "<Title></Title><Author></Author>";
                XmlText txtNode = doc.CreateTextNode("A BRIEF HISTORY OF TIME");
                newElem.FirstChild.AppendChild(txtNode);
                newElem.AppendChild(doc.CreateWhitespace("\r\n")); // Linefeed
                newElem["Author"].InnerText = "Stephen Hawking";
    
                // 2.  Add the new element to the end of the book list.
                doc.DocumentElement.AppendChild(newElem);
    
                // III. Deletion
                // 1. Remove the Genre nodes from Book elements.
                foreach (XmlNode node in nodeList)
                   node.RemoveChild(node.SelectSingleNode("Genre"));
    
                // Display the output in Debug window.
                System.Diagnostics.Debug.Write("{0}\n", doc.OuterXml);
    
                // 2. Save the modified XML to a file in Unicode format.
                doc.PreserveWhitespace = true;
                XmlTextWriter wrtr = new XmlTextWriter("Q317666_Out.xml", Encoding.Unicode);
                doc.WriteTo(wrtr);
                wrtr.Close();
             }
             catch(XmlException xmlEx)        // Handle the Xml exceptions here.         
             {
                Console.WriteLine("{0}", xmlEx.Message);
             }
             catch(Exception ex)              // Handle the generic exceptions. here
             {
                Console.WriteLine("{0}", ex.Message);
             }
          }
       }
    }
    						
    este código realiza las siguientes tareas:
    • Carga el documento XML desde un archivo que representa una colección de libros.
    • Modifica parte del contenido.
    • Crea y agrega un nuevo elemento de libro.
    • Elimina uno de los nodos secundarios de todos los nodos de libro.
    • Guarda los datos modificados como un archivo XML nuevo.

  4. Lea los comentarios en línea para comprender la funcionalidad del código.
  5. Compile y ejecute la aplicación. Observe que el archivo Q317666.xml está en la misma carpeta que el archivo ejecutable. Puede modificar la ruta de acceso archivo en el código para cambiar esta configuración.
  6. Abra el archivo C:\Q317666_Out.xml en Microsoft Internet Explorer. El resultado aparece similar al siguiente:
      <?xml version="1.0" encoding="UTF-16" ?> 
    - <Collection>
      - <Book Id="101">
          <Title>PRINCIPLE OF RELATIVITY</Title> 
          <Author>Albert Einstein</Author> 
        </Book>
      - <Book Id="102">
          <Title>COSMOS</Title> 
          <Author>Carl Sagan</Author> 
        </Book>
      - <Book Id="103">
          <Title>A BRIEF HISTORY OF TIME</Title> 
          <Author>Stephen Hawking</Author> 
      </Book>
      </Collection>
    						

Referencias

Para obtener información adicional, haga clic en los números de artículo correspondientes para verlos en Microsoft Knowledge Base:
313824INFO: Guía para la programación XML con el Analizador de modelo DOM en .NET Framework
313651INFORMACIÓN: Guía básica para XML en .NET Framework
Para obtener información adicional, visite los siguientes sitios Web de Microsoft:
Espacio de nombres System.Xml
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxml.asp

XML
http://msdn.microsoft.com/xml

Propiedades

Id. de artículo: 317666 - Última revisión: miércoles, 24 de septiembre de 2003 - Versión: 3.3
La información de este artículo se refiere a:
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Palabras clave: 
kbmt kbbcl kbhowtomaster KB317666 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 317666

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com