【问题标题】:Children of XElementXElement 的子级
【发布时间】:2010-10-03 23:14:19
【问题描述】:

如何获取 XElement 的子元素?

我目前正在使用 XElement.Descendants() 函数,它返回所有级别的 XElement,而不仅仅是子节点。

我真正想要的是一个只有孩子的 IEnumerable。

【问题讨论】:

    标签: c# xml linq-to-xml xelement


    【解决方案1】:

    通过调用Element()Elements() 函数可以访问XElement 的直接子元素。使用带有名称的重载来访问特定元素,或者不使用名称来访问所有子元素。

    还有类似的方法,例如 Attribute()Attributes(),您可能会觉得有用。

    【讨论】:

    • 这似乎解决了 OPs 的问题,但 Element() 没有无参数重载,所以当我知道它的 XName 可以变化时,这并不能帮助我获得第一个孩子。
    • 如果你只想要第一个孩子,不管名字,尝试使用Elements().FirstOrDefault()
    • 为什么他们不能直接称它为“XElement.Children”?更容易被发现。
    • @Tacroy 每个 XElement 都有两组孩子,其中任何一组都可能为空。一个是有序的子 elements 集,另一个是子 attributes 集 - 无论您认为应该在 Children 中找到哪个,其他会不同意。使用 ElementsAttributes 遵循 Xml 标准的命名法。
    • @Bevan 我认为更好的答案是可能还有一组 节点,每个节点都可能不是一个元素。属性实际上不是元素的子元素。
    【解决方案2】:

    XElement.Nodes() 应该可以得到你想要的。

    如果您只想要 XElement 子节点,那么您可能需要限制它(取决于您的 XML):

    XElement.Nodes().OfType<XElement>()
    

    【讨论】:

      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-05
        • 1970-01-01
        • 2011-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多