Para continuar con el tema de linq to xml, en este post vamos a crear un ejemplo en donde se realiza una consulta a un documento XML y vamos a filtrar el contenido del XML para obtener solo los registros que cumplan con la condición que deseamos.
Para iniciar, el documento XML que vamos 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>
<cliente>
<nombre>Diego Simon</nombre>
<cuidad>Buenos Aires</cuidad>
<pais>Argentina</pais>
</cliente>
<cliente>
<nombre>Ismael Lopez</nombre>
<cuidad>Cuidad de Guatemala</cuidad>
<pais>Guatemala</pais>
</cliente>
<cliente>
<nombre>Isis Benavides</nombre>
<cuidad>Alajuela</cuidad>
<pais>Costa Rica</pais>
</cliente>
</clientes>
Seguidamente vamos a crear una consulta utilizando Linq2XML en la cual vamos a seleccionar todos los clientes que tengan como país Argentina o Costa Rica. Nótese que la condición de búsqueda es compuesta, ya que debemos crear un where y un or en la condición del where. El código 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")
where cliente.Element("pais").Value == "Argentina"
|| cliente.Element("pais").Value == "Costa Rica"
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 general, este código es casi el mismo que utilizamos en el post anterior acerca de linq2XML, lo que lo diferencia es la condición utilizada para llevar a cabo la búsqueda. En este caso, dentro del elemento cliente utilizamos el elemento país para acceder al valor de este nodo, y lo comparamos con el nombre de los países que deseamos filtrar. Como queremos filtrar por dos países, entonces ligamos la misma condición con el símbolo (||) or en C# y procedemos a ejecutar la consulta. El resultado de la ejecución de este código se puede ver en la siguiente pantalla.
No hay comentarios:
Publicar un comentario