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



Some HTML is OK

or, reply to this post via trackback.