Linq to XML + récupération de plusieurs élements [Résolu]

Messages postés
34
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
24 septembre 2014
- - Dernière réponse : cs_Yanith
Messages postés
34
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
24 septembre 2014
- 4 nov. 2012 à 16:58
Bonjour,

j'ai un soucie avec une requète Linq to XML, Je vous présente déjà l'architecture de mon fichier XML que voici :

<Root>
  <ElementA AttributA="Valeur Attribut A">
    <Element1>
      <ElementA1>Valeur A1</ElementA1>
      <ElementB2>Valeur B2</ElementB2>
      <ElementC3>Valeur C3</ElementC3>
    </Element1>
    <Element2>
      <ElementA1>Valeur A1</ElementA1>
      <ElementB2>Valeur B2</ElementB2>
      <ElementC3>Valeur C3</ElementC3>
      <ElementD4>Valeur D4</ElementD4>
      <ElementE5>Valeur E5</ElementE5>
      <ElementF6>Valeur F6</ElementF6>
    </Element2>
  </ElementA>
  <ElementA AttributA="Valeur Attribut B">
    <Element1>
      <ElementA1>Valeur A1</ElementA1>
      <ElementB2>Valeur B2</ElementB2>
      <ElementC3>Valeur C3</ElementC3>
    </Element1>
    <Element2>
      <ElementA1>Valeur A1</ElementA1>
      <ElementB2>Valeur B2</ElementB2>
      <ElementC3>Valeur C3</ElementC3>
      <ElementD4>Valeur D4</ElementD4>
      <ElementE5>Valeur E5</ElementE5>
      <ElementF6>Valeur F6</ElementF6>
    </Element2>
  </ElementA>
</Root>


Je ne parviens pas à récuperer toutes les valeurs des enfants de <Element1> dans <ElementA> en fitrant par la valeur .

Voici le code que j'utilise, mais je ne sais pas quoi mettre à la place des XXXXXXXXXX

            IEnumerable<XElement> Result = from el in _xDoc.Root.Elements("ElementA")
                                           where (string)el.Attribute("AttributA") == "Valeur Attribut A"
                                           select el.XXXXXXXXXX ;


Pourriez vous m'aider SVp ?
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
25
3
Merci
Salut,

Pourquoi pas une requête XPath :
IEnumerable<XElement> Result = xDoc.XPathSelectElements("//ElementA[@AttributA='Valeur Attribut A']/Element1/*");


_____________
Kenji

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 186 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Charles Racaud
Messages postés
34
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
24 septembre 2014
0
Merci
oui effectivement, j'y avais pas pensé. Merci
Commenter la réponse de cs_Yanith
Messages postés
13842
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 octobre 2019
311
0
Merci
Bonjour

IEnumerable<XElement> Result = (from el in _xDoc.Root.Elements("ElementA")
                                           where (string)el.Attribute("AttributA") == "Valeur Attribut A"
                                           select el.Value).ToList() ;


De tête mais ça doit être bon.
Whismeril
Commenter la réponse de Whismeril
Messages postés
34
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
24 septembre 2014
0
Merci
merci pour ta réponce, mais il se trouve qu'il y a deux erreurs :

- ToList() renvoie vers un List<string> donc IEnumerable<XElement> ne peu pas fonctionner
- Et quand on corrige la première erreur, la deuxième survient , les éléments qui ressortent sont tous les enfants ElementA. Alors que je voudrais tous les enfants de Element1 dans ElementA .

Mais bon t'embete pas, avec la réponce de Charles j'ai pu m'en sortir. Merci quand même
Commenter la réponse de cs_Yanith
Messages postés
13842
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 octobre 2019
311
0
Merci
Ha oui désolé, si tu dois sortir des objets complets il y a quelques exemples sur cette discussion, ou celle-ci.

Quand à la liste, même si elle ne retourne pas ce que tu veux j'aurais du écrire .ToList<XElement>()


Whismeril
Commenter la réponse de Whismeril
Messages postés
34
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
24 septembre 2014
0
Merci
haa oui tiens, je ne connaissais pas .ToList<XElement>(), merci pour l'info. Les liens je les avais déjà parcourus vite fait mais je vais m'y pencher plus longuement.
Commenter la réponse de cs_Yanith