我试图从一个看起来像这样的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的集合。它包含根元素和所有子元素。
答案 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>
,您可以根据需要进一步解析。