如何从XDocument对象获取子元素列表?

时间:2010-03-30 00:40:07

标签: c# xml linq-to-xml

我试图从一个看起来像这样的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 个答案:

答案 0 :(得分:9)

您想要选择后代(“视频”)。 “视频”似乎是您的根条目,其中有1个元素。视频的内部元素是您想要查询的内容。

示例:

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

它为您提供了一个具有两个字符串属性的IEnumerable匿名类型。否则,您只需选择“视频”即可获得IEnumerable<XElement>,您可以根据需要进一步解析。