Bonjour,
Je crée un logiciel de gestion de recette de cuisine.
J'ai stocke les données dans un fichier Xml.
Voici un exemple de ce fichier :
Comme vous pouvez le voir j'ai créer un espace de nom relative à mon application (avec une URI bidon)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <?xml version="1.0" encoding="ISO-8859-1"?> <LivreRecette xmlns:cz="http://coozina.sourceforge.net/specifications"> ... <cz:Recette id="1"> <cz:Titre>Crumbles de fraises</cz:Titre> <cz:Catégorie>[cz.Catégorie.Dessert]</cz:Catégorie> <cz:NombrePersonne>4</cz:NombrePersonne> <cz:Tags>dessert fraise crumble beurre sucre</cz:Tags> <cz:TpsPreparation>20</cz:TpsPreparation> <cz:TpsCuisson>25</cz:TpsCuisson> <cz:Ingrédients> <cz:Ingrédient nom="fraises" unité="grs" quantité="150" /> <cz:Ingrédient nom="sucre roux" unité="grs" quantité="150" /> <cz:Ingrédient nom="beurre" unité="grs" quantité="150" /> <cz:Ingrédient nom="sucre en poudre" unité="càs" quantité="2" /> <cz:Ingrédient nom="vanille en poudre" unité="pincée" quantité="1" /> <cz:Ingrédient nom="cannelle en poudre" unité="pincée" quantité="1" /> </cz:Ingrédients> ... </LivreRecette>
Le problème c'est que je voudrais récupérer le nom de chaque recette pour le mettre dans un listBox.
Mais avec l'espaces de nom ça pose un problème.
J'ai trouvé cette page sur le msdn
http://msdn.microsoft.com/fr-fr/library/e5t11tzt.aspx
J'y ai repris l'exemple en adaptant à mon cas.
Mais cela me retourne aucun resultat. Y a-t-il une autre méthode pour faire une requete XPath sur un document XML avec un espace de noms ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 XPathNavigator navigator = document.CreateNavigator(); XPathExpression query = navigator.Compile(@"/cz:LivreRecette/cz:Recette"); XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable); manager.AddNamespace("cz", "http://coozina.sourceforge.net/specifications"); query.SetContext(manager); XPathNodeIterator nodes = navigator.Select(query); while(nodes.MoveNext()) { liste_recettes.Items.Add(nodes.Current.Name); }
Merci pour votre aide.
Partager