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

Messages postés
34
Date d'inscription
mercredi 26 octobre 2005
Dernière intervention
24 septembre 2014
- - Dernière réponse : cs_Yanith
Messages postés
34
Date d'inscription
mercredi 26 octobre 2005
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 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
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 97 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
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
12421
Date d'inscription
mardi 11 mars 2003
Dernière intervention
18 décembre 2018
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
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
12421
Date d'inscription
mardi 11 mars 2003
Dernière intervention
18 décembre 2018
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
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.