J'ai reussi à faire se que je voulais pour filtrer mon fichier et afficher seulement les Pays ayant pour monnaie commue l'Euro.
protected void Button2_Click(object sender, EventArgs e)
{
XDocument xmlDoc = XDocument.Load(Server.MapPath(".") + "\\Data.xml");
if (DropDownList1.SelectedIndex == 0)
{
var countries = from country in xmlDoc.Descendants("Country")
where country.Element("CurrencyCode").Value == DropDownList1.SelectedValue.ToString()
select new
{
Code = country.Element("CountryCode").Value,
Name = country.Element("CountryName").Value,
Capital = country.Element("CapitalCity").Value,
};
TextBox1.Text = "";
foreach (var country in countries)
{
TextBox1.Text = TextBox1.Text + "Code :" + country.Code + " Name:" + country.Name + " Capital :" + country.Capital + "\n" + "\n";
}
Mon probleme étant de maintenant filtrer de la meme facon pour obtenir les Pays ayant pour Indicatif un nombre compris entre 40-50.
Cela peu paraitre tout bete, mais je n'arrive pas a trouver la solution.
Merci a celui ou celle qui essaiera de m'aider !
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 18 janv. 2010 à 10:03
Bonjour,
Au lieu de parcourir toi-même tous les noeuds et sélectionner ce qui t'intéressent, je te propose d'utiliser une chose bien plus pratique: les XPath.
Les requêtes XPath te permettent de "requêter" ton fichier XML [à la manière du SQL sur une base de données]. Le langage n'est pas le même mais la puissance et l'efficacité est au rendez-vous.
Tu pourras alors aisément développer tes deux besoins:
- afficher seulement les Pays ayant pour monnaie commue l'Euro
- obtenir les Pays ayant pour Indicatif un nombre compris entre 40-50
Et ceci, en une seule requête (pour chaque besoin bien sûr).
Pour ce faire, je ne vais pas rabacher les choses qui ont déjà été très bien expliquées auparavent.
C'est pourquoi je te propose le tutorial de Bidou qui devrait te combler: http://www.csharpfr.com/tutoriaux/XPATH-LANGUAGE_536.aspx.
Et si tu n'as pas assez d'info pour faire tes XPath, je te propose de recherche un petit tutoriel sur les XPath sur google.
--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 18 janv. 2010 à 10:05
Salut
Il suffit d'ajouter deux autres conditions dans ta requête linq.
var countries = from country in xmlDoc.Descendants("Country")
where country.Element("CurrencyCode").Value == DropDownList1.SelectedValue.ToString()
&& Convert.ToInt32(country.Element("PhoneCode")) >= 40
&& Convert.ToInt32(country.Element("PhoneCode")) <= 50
select new
{
Code = country.Element("CountryCode").Value,
Name = country.Element("CountryName").Value,
Capital = coutry.Element("CapitalCity").Value
};
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -