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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top