LINQ to XML
Los objetos XML
LINQ to XML es una implementación del lenguaje de consulta para documentos XML. El espacio de nombres System.Xml.Linq expone objetos que permiten trabajar con documentos XML en memoria de manera sencilla.
1. XDocument
La clase XDocument representa al documento XML. Contiene los miembros que permiten acceder a los demás objetos de tipo XElement, XNamespace, XComment y XAttribute.
Los dos métodos más importantes de esta clase son Load y Save. El método estático Load permite cargar un documento XML desde una ruta de acceso o desde una URL y almacenarlo en memoria, en un objeto XDocument:
XDocument xDocument = XDocument.Load(@"C:\miArchivo.xml");
El documento XML también puede provenir de un objeto TextReader o XmlReader y se pasa como argumento al método Load.
Una vez que se carga en memoria el documento, es posible trabajar con sus propiedades:
string s1 = xDocument.Root.Name.ToString();
string s2 = xDocument.FirstNode.NodeType.ToString();
El otro método importante de la clase XDocument es el método Save, que permite hacer copias de seguridad del documento XML que está en memoria en un archivo en disco, un objeto TextWriter o un objeto XmlWriter:
xDocument.Root.Add(new XAttribute("NuevoAtributo",
"NuevoValor"));
xDocument.Save(@"C:\miArchivo.xml");
2. XElement
Uno de los tipos que más se usan para trabajar con documentos...
Ejecutar consultas con LINQ
LINQ permite realizar consultas sobre un documento XML. Los objetos que se han presentado anteriormente XDocument, XElement, e incluso XAttribute, permiten extraer los datos deseados.
Las consultas LINQ to XML siguen los mismos principios que la sintaxis LINQ general.
Los siguientes ejemplos se basan en el archivo de ejemplo LinqToXML.xml:
<?xml version="1.0" encoding="utf-8"?>
<SelMailer>
<MailServer ID="1">
<Host>mail.midominio.com</Host>
<Username>MiUsuario</Username>
<Password>miContraseña</Password>
</MailServer>
<MailServer ID="2">
<Host>mail.midominio2.com</Host>
<Username>MiUsuario2</Username>
<Password>miContraseña2</Password>
</MailServer>
<Sender ID="1">
<Name>mi nombre</Name>
<Email>email@midominio.com</Email>
</Sender>
<MailServerSender MailServerID="1" SenderID="1" />
<MailServerSender MailServerID="2" SenderID="1"...