En post anteriores hemos descrito como llevar a cabo consultas de diversos tipos utilizando Linq2Objects y una lista genérica de productos como fuente de datos. En esta ocasión vamos a utilizar Linq – específicamente Linq2XML – para hacer consultas a un documento XML.
Inicialmente vamos a crear el documento XML al cual le vamos a consultar utilizando Linq2XML. El documento a utilizar es el siguiente:
<?xml version="1.0" encoding="utf-8" ?>
<clientes>
<cliente>
<nombre>Juan Perez</nombre>
<cuidad>Buenos Aires</cuidad>
<pais>Argentina</pais>
</cliente>
<cliente>
<nombre>Ernesto Jimenez</nombre>
<cuidad>La Paz</cuidad>
<pais>Bolivia</pais>
</cliente>
<cliente>
<nombre>Ana Mora</nombre>
<cuidad>Heredia</cuidad>
<pais>Costa Rica</pais>
</cliente>
<cliente>
<nombre>Ismael Lopez</nombre>
<cuidad>Cuidad de Guatemala</cuidad>
<pais>Guatemala</pais>
</cliente>
</clientes>
Seguidamente vamos a crear el código necesario para consultar elementos sobre este documento. Inicialmente vamos a obtener todos los clientes del documento antes presentando. El código requerido para llevar a cabo esta consulta es el siguiente.
static void Main( string[] args )
{
XDocument xmlDoc = XDocument.Load("Clientes.xml");
var resultado = from cliente in xmlDoc.Descendants("cliente")
select new
{
Nombre = (string)cliente.Element("nombre"),
pais = (string)cliente.Element("pais")
};
foreach (var cliente in resultado)
{
Console.WriteLine(cliente.Nombre);
Console.WriteLine(cliente.pais);
Console.WriteLine("-----------------");
}
}
En este código simplemente cargamos el documento xml en una variable de tipo XDocument, seguidamente seleccionamos todos los descendientes del nodo raíz que en este caso es cliente, y luego creamos objetos anónimos con el nombre y el país del cliente que estamos consultando.
El resultado al ejecutar esta consulta se ve en la siguiente pantalla:
En los post próximos vamos a ver como ampliar el uso de Linq2XML en lo que se refiere a consultas de diversos tipos.
No hay comentarios:
Publicar un comentario