TOC

This article is currently in the process of being translated into Spanish (~98% done).

XML:

Working with the XmlNode class

En el capítulo anterior usamos la clase XmlDocument para interpretar un archivo XML. Una nueva clase fue introducida en el ejemplo, la cual es esencial para interpretar un XML con XmlDocument: la clase XmlNode. El XML es básicamente interpretado en un XmlNode, el cual es el elemento raíz y a partir de este podrás acceder a los elementos hijos usando la propiedad ChildNodes. Sin embargo, la clase XmlNode brinda acceso a más información también, como por ejemplo el nombre de la etiqueta, los atributos, el texto interno y el XML en sí. Este capítulo es una breve descripción de algunos de los aspectos más interesantes de XmlNode, lo cual es importante saber porque la clase XmlNode es un concepto clave cuando se trata de interpretar XML con la clase XmlDocument. En los siguientes ejemplos usaremos mucho a DocumentElement, que como es, de hecho, del tipo XmlElement, XmlElement hereda de XmlNode, así que es esencialmente lo mismo.

La propiedad Name te dará simplemente el nombre del nodo. El siguiente ejemplo dará el texto "user":

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<user name=\"John Doe\">A user node</user>");
Console.WriteLine(xmlDoc.DocumentElement.Name);
Console.ReadKey();

La propiedad InnerText contendrá el texto entre las etiquetas de apertura y cierre, así:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<test>InnerText is here</test>");
Console.WriteLine(xmlDoc.DocumentElement.InnerText);
Console.ReadKey();

La propiedad InnerXml es un poco parecida a InnerText, pero mientras que InnerText eliminará cualquier XML dentro de las etiquetas, InnerXml obviamente no lo hará. El siguiente ejemplo debería ilustrar la diferencia:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<users><user>InnerText/InnerXml is here</user></users>");
Console.WriteLine("InnerXml: " + xmlDoc.DocumentElement.InnerXml);
Console.WriteLine("InnerText: " + xmlDoc.DocumentElement.InnerText);
Console.ReadKey();

La propiedad OuterXml es parecida a InnerXml, pero también incluirá al nodo XML mismo. El siguiente ejemplo debería ilustrar la diferencia:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<users><user>InnerText/InnerXml is here</user></users>");
Console.WriteLine("InnerXml: " + xmlDoc.DocumentElement.InnerXml);
Console.WriteLine("OuterXml: " + xmlDoc.DocumentElement.OuterXml);
Console.ReadKey();

Ya trabajamos con los atributos en el capítulo previo, pero he aquí otro ejemplo:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<user name=\"John Doe\" age=\"42\"></user>");
if(xmlDoc.DocumentElement.Attributes["name"] != null)
    Console.WriteLine(xmlDoc.DocumentElement.Attributes["name"].Value);
if(xmlDoc.DocumentElement.Attributes["age"] != null)
    Console.WriteLine(xmlDoc.DocumentElement.Attributes["age"].Value);
Console.ReadKey();

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!