Skip to content

Categories:

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í:

<libros>
   <libro>
      <titulo>Pascal 7</titulo>
      <autor>Luis Joyanes</autor>
   </libro>
   <libro>
      <titulo>Enciclopedia de C#</titulo>
      <autor>Francisco javier Ceballos </autor>
   </libro>
   <libro>
      <titulo>El código Davinci</titulo>
      <autor>Dan Brown </autor>
   </libro>
   <libro>
      <titulo>Ángeles y demonios</titulo>
      <autor>Dan Brown</autor>
   </libro>
</libros>

Antes de nada hay que hacer un “using” al linq de xml

using System.Xml.Linq;

Este método hace la ordenación por título de todos los libros

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);
}

Este método hace la ordenación por título de todos los libros de “Dan Brown”

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);
}

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:

libro.Element("ELEMENTO AL QUE QUEREMOS ACCEDER").Value

Aunque la gran diferencia es esta:

select new
{
Titulo = libro.Element("titulo").Value,
Autor = libro.Element("autor").Value
};

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!

No hay artículos relacionados. Echa un ojo a estos:

    Posted in Sin categoría.


    0 Responses

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



    Some HTML is OK

    or, reply to this post via trackback.