Wie bekomme ich eine Liste von untergeordneten Elementen aus dem XDocument -Objekt?

StackOverflow https://stackoverflow.com/questions/2542184

  •  23-09-2019
  •  | 
  •  

Frage

Ich versuche alle "Video" -Anemente und ihre Attribute aus einer XML -Datei zu erhalten, die so aussieht:

<?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>

Im Folgenden wird nur der Stammknoten und alle Kinder ausgewählt. Ich möchte alle 'Video' Elemente in das iEnumerable bringen. Kann mir jemand sagen, was ich falsch mache?

 IEnumerable<XElement> elements = from xml in _xdoc.Descendants("videos")
                           select xml;

Das obige gibt eine Sammlung mit einer Länge zurück == 1. Es enthält das Wurzelelement und alle Kinder.

War es hilfreich?

Lösung

Sie möchten Nachkommen auswählen ("Video"). "Videos" scheint Ihr Stammeintrag zu sein, von dem es 1 Element gibt. Die inneren Elemente von Videos sind das, was Sie abfragen möchten.

Beispiel:

var query = from video in document.Descendants("video")
            select new
            {
                Title = video.Attribute("title").Value,
                Path = video.Attribute("path").Value
            };

Das gibt Ihnen einen iEnumerable eines anonymen Typs mit zwei String -Eigenschaften. Andernfalls können Sie einfach "Video" auswählen und eine erhalten IEnumerable<XElement>, was Sie bei Bedarf weiter analysieren würden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top