Как получить список детских элементов от объекта Xdocument?
-
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>
, что вы бы далее разрабатываете по мере необходимости.