Как получить список детских элементов от объекта Xdocument?

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

  •  23-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь получить все элементы «видео» и их атрибуты из XML -файла, который выглядит так:

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

Следующее выберет только корневой узел и всех детей. Я хотел бы получить все элементы «видео» в Ienumerable. Кто -нибудь может сказать мне, что я делаю не так?

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

Приведенное выше возвращает коллекцию с длиной == 1. Он содержит корневой элемент и всех детей.

Это было полезно?

Решение

Вы хотите выбрать потомков («Видео»). «Видео», кажется, является вашей корневой записью, из которой есть 1 элемент. Внутренние элементы видео - это то, что вы хотите запросить.

Пример:

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

Это дает вам необходимость анонимного типа с двумя свойствами строки. В противном случае вы можете просто выбрать «видео» и получить IEnumerable<XElement>, что вы бы далее разрабатываете по мере необходимости.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top