Skip to content


Ejemplo LINQ con XML

Aqui está el ejemplo de linq con ficheros xml.

Voy a seguir trabajando con los mismos datos que en el ejemplo anterior. El fichero xml queda así:
[code lang=»xml»] Pascal 7
Luis Joyanes
Enciclopedia de C#
Francisco javier Ceballos
El código Davinci
Dan Brown
Ángeles y demonios
Dan Brown
[/code]

Antes de nada hay que hacer un «using» al linq de xml
[code lang=»csharp»]
using System.Xml.Linq;
[/code]

Este método hace la ordenación por título de todos los libros
[code lang=»csharp»]
private void ordenaLinqXML(string path)
{
//Cargamos el documento xml (path es la dirección donde está el xml)
XDocument cargaDocumento = XDocument.Load(path);
//Creamos la query
var query = from libro in cargaDocumento.Descendants(«libro»)
orderby libro.Element(«titulo»).Value
select new
{
Titulo = libro.Element(«titulo»).Value,
Autor = libro.Element(«autor»).Value
};
//Mostramos el resultado de la ordenación en un ListBox
foreach(var libAux in query)
lbLinq.Items.Add(libAux.Titulo+» – «+libAux.Autor);
}
[/code]

Este método hace la ordenación por título de todos los libros de «Dan Brown»
[code lang=»csharp»]
private void selectLinqXML(string path)
{
//Cargamos el documento xml (path es la dirección donde está el xml)
XDocument cargaDocumento = XDocument.Load(path);
//Creamos la query
var query = from libro in cargaDocumento.Descendants(«libro»)
where libro.Element(«autor»).Value.ToString().Equals(«Dan Brown»)
orderby libro.Element(«titulo»).Value
select new
{
Titulo = libro.Element(«titulo»).Value,
Autor = libro.Element(«autor»).Value
};
//Mostramos el resultado de la ordenación en un ListBox
foreach (var libAux in query)
lbLinq.Items.Add(libAux.Titulo + » – » + libAux.Autor);
}
[/code]

Como podeis ver la query se escribe de forma parecida al ejemplo anterior, la diferencia es que para acceder a los valores hay que poner:
[code lang=»csharp»]
libro.Element(«ELEMENTO AL QUE QUEREMOS ACCEDER»).Value
[/code]

Aunque la gran diferencia es esta:
[code lang=»csharp»]
select new
{
Titulo = libro.Element(«titulo»).Value,
Autor = libro.Element(«autor»).Value
};
[/code]
Con esto, estamos creando las propiedades «Titulo» y «Autor» en cada uno de los elementos que va a tener la colección que recojamos de la query, y se hace en tiempo de EJECUCIÓN

Espero que os sirva de ayuda. Un saludo!

Posted in C#, Framework 3.5.

Tagged with , , , .


One Response

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Savas says

    No esta completo este codigo. A mi no me funciono. Gracias