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

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

Répondre au sujet
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 1 nov. 2012 à 15:17
+3
Utile
Salut,

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


_____________
Kenji
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Charles Racaud
cs_Yanith 34 Messages postés mercredi 26 octobre 2005Date d'inscription 24 septembre 2014 Dernière intervention - 1 nov. 2012 à 16:58
0
Utile
oui effectivement, j'y avais pas pensé. Merci
Commenter la réponse de cs_Yanith
Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - Modifié par Whismeril le 8/03/2014 à 11:00
0
Utile
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
cs_Yanith 34 Messages postés mercredi 26 octobre 2005Date d'inscription 24 septembre 2014 Dernière intervention - 4 nov. 2012 à 10:37
0
Utile
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
Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - 4 nov. 2012 à 11:39
0
Utile
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
cs_Yanith 34 Messages postés mercredi 26 octobre 2005Date d'inscription 24 septembre 2014 Dernière intervention - 4 nov. 2012 à 16:58
0
Utile
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.