Comment obtenir une liste d'éléments enfants de l'objet XDocument?
-
23-09-2019 - |
Question
J'essaie d'obtenir tous les éléments "vidéo" et leurs attributs à partir d'un fichier XML qui ressemble à ceci:
<?xml version="1.0" encoding="utf-8" ?>
<videos>
<video title="video1" path="videos\video1.wma"/>
<video title="video2" path="videos\video2.wma"/>
<video title="video3" path="videos\video3.wma"/>
</videos>
Les éléments suivants ne sélectionneront que le nœud racine et tous les enfants. J'aimerais obtenir tous les éléments «vidéo» dans l'iénumabilité. Quelqu'un peut-il me dire ce que je fais de mal?
IEnumerable<XElement> elements = from xml in _xdoc.Descendants("videos")
select xml;
Ce qui précède renvoie une collection avec une longueur == 1. Il contient l'élément racine et tous les enfants.
La solution
Vous souhaitez sélectionner des descendants ("vidéo"). "Vidéos" semble être votre entrée racine, dont il y a 1 élément. Les éléments intérieurs des vidéos sont ce que vous voulez interroger.
Exemple:
var query = from video in document.Descendants("video")
select new
{
Title = video.Attribute("title").Value,
Path = video.Attribute("path").Value
};
Cela vous donne un type de type anonyme avec deux propriétés de chaîne. Sinon, vous pouvez simplement sélectionner "vidéo" et obtenir un IEnumerable<XElement>
, que vous analyseriez davantage au besoin.