Bonjour,
Actuellement j'essaie de réaliser des fonctions de recherche dans un fichier XML avec Linq to XML. J'ai un fichier XML avec la structure suivante :
En gros j'ai une suite d'élément contenant des Enregistrements, qui sont identifier par une balise ID. Ce que je souhaite c'est permettre à l'utilisateur de rechercher un Element par son ID.
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
22
23
24
25
26 <Root> <Element1> <Enregistrement> <...></...> </Enregistrement> </Element1> <C_LIEUXLIVRAISON> <Enregistrement> <IDLIEULIVRAISON>1</IDLIEULIVRAISON> <NOMLIEULIVRAISON>Service technique</NOMLIEULIVRAISON> <NUMRUE>15</NUMRUE> <RUE>Rue machin</RUE> </Enregistrement> <Enregistrement> <IDLIEULIVRAISON>2</IDLIEULIVRAISON> <NOMLIEULIVRAISON>Mairie</NOMLIEULIVRAISON> <NUMRUE>2</NUMRUE> <RUE>Avenue truc</RUE> </Enregistrement> </C_LIEUXLIVRAISON> <Element2> <Enregistrement> <...></...> </Enregistrement> </Element2> </Root>
Actuellement j'ai cette méthode :
Aujourd'hui j'ai une erreur qui se déclenche au niveau de la clause "where", ce qui est normal car je lui demande l'élément du nom IDLIEULIVRAISON juste en dessous de C_LIEUXLIVRAISON, or directement après ce dernier il n'y a que des balises Enregistrement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 XNamespace ns = "urn:bdd-schema"; XDocument xdoc = XDocument.Load(monfichierXml); XElement result = new XElement("Root", from el in xdoc.Descendants(ns + "C_LIEUXLIVRAISON") where el.Element(ns + "IDLIEULIVRAISON").Value == "2" select el );
Je n'arrive pas à sélectionner une balise qui est dans une balise, dans une autre balise .
J'ai pensé à faire quelque chose comme ça :
Mais il faut boucler sur l'élément Enregistrement et je n'y suis pas encore parvenu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 result = new XElement("Root", from el in xdoc.Descendants(ns + "C_LIEUXLIVRAISON") where el.Name.LocalName.Equals("Enregistrement") from el2 in el.Elements() where el2.Element(ns + "IDLIEULIVRAISON").Value == "2" select el2 );
edit : Comme c'est un peu fouillis ce que je dis, en fait je cherche à faire une requête qui me retourne ça :
Quelqu'un a une idée pour réaliser cette requête ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <Enregistrement> <IDLIEULIVRAISON>2</IDLIEULIVRAISON> <NOMLIEULIVRAISON>Mairie</NOMLIEULIVRAISON> <NUMRUE>2</NUMRUE> <RUE>Avenue truc</RUE> </Enregistrement>
Partager