我正在尝试从看起来像这样的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。否则,您可以选择“视频”并获得 IEnumerable<XElement>, ,您将根据需要进一步解析。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top