使用Linq一般扁平化XDocument?

时间:2012-04-20 15:53:35

标签: c# xml linq

有一个question几乎完全符合我想要的名称,但我不知道我的XML DOM会提前显示什么。

我想做这样的事情:

private static IEnumerable<XElement> FindAllContainers(XDocument xml)
{
          IEnumerable<XElement> query = from XElement outer in xml.Root.Elements()
                                        from XElement node in outer.Elements()
                                        where true //Enum.IsDefined(typeof(Role), GetContainerRole(node)) 
                                        select node;
                                        return query;
}

基本的想法是我想查询任何给定XML结构的所有 XElements的枚举。上面的代码不会返回任何结果。 xml包含一个大的嵌套XML结构并且是一个XDocument。另一个问题是手动为Elements提供标签名称。我不知道他们提前在方法中静态设置它。

1 个答案:

答案 0 :(得分:6)

因此,我觉得你只想枚举文档中的所有元素。这里没什么复杂的,只需调用Descendants()方法(没有参数),它将返回文档中的所有元素。

private static IEnumerable<XElement> FindAllContainers(XDocument doc)
{
    return doc.Descendants();
}