【问题标题】:How do I get a list of child elements from XDocument object?如何从 XDocument 对象中获取子元素列表?
【发布时间】:2023-03-07 20:17:01
【问题描述】:

我正在尝试从如下所示的 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 的集合。它包含根元素和所有子元素。

【问题讨论】:

    标签: c# xml linq-to-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&lt;XElement&gt;,您可以根据需要进一步解析。

    【讨论】:

    • 谢谢!我认为这个方法应该返回指定元素名称的所有子元素。因此,我期待“视频”的所有孩子。
    • 哦,我明白了。这有点像 .DescendantsOf(name) 方法。
    猜你喜欢
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2016-03-19
    • 2020-09-11
    • 2011-05-08
    相关资源
    最近更新 更多