154 votes

Interroger un objet XDocument pour les éléments par nom à n’importe quelle profondeur

J’ai un objet. Je tiens à interroger pour les éléments avec un nom particulier à toute profondeur à l’aide de LINQ. Lorsque j’utilise , je ne reçois que des éléments qui sont des enfants directs du niveau actuel. Ce que je cherche est l’équivalent de « //element_name » dans XPath... devrais je viens d’utiliser `` , ou y a-t-il un moyen de le faire à l’aide de méthodes LINQ ? Merci.

238voto

Jon Skeet Points 692016

Descendants devraient fonctionner tout à fait correctement. Voici un exemple :

Résultats :

61voto

Jelgab Points 760

Voici un exemple qui indique l’espace de noms :

54voto

Vous pouvez faire de cette façon :

est un .

Sachez que la propriété retourne un objet qui a un et un . C’est pourquoi vous devez utiliser si vous voulez comparer par nom.

22voto

Nenad Dobrilovic Points 970

Descendants fera exactement ce que vous devez, mais soyez sûr que vous avez inclus un espace de noms avec le nom de l’élément. Si vous l’omettez, vous obtiendrez probablement une liste vide.

15voto

roland roos Points 41

Il existe deux façons d’y parvenir,

  1. LINQ-to-xml
  2. XPath

Voici des exemples d’utilisation de ces approches,

Si vous utilisez XPath, vous devez faire quelques manipulations avec l’interface IEnumerable :

Notez que

le résultat soit un pointeur null, soit aucun résultat.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X