使用LINQ从XML中选择多个节点

4
我有这样的XML。
<root>
    <content>
        ....
    </content>
    <index>
        ....
    </index>
    <keywords>
        ....
    </keywords>
</root>

但我只需要选择

  • 节点。
    <content>
        ....
    </content>
    <index>
        ....
    </index>
    

    我找到了如何选择单个节点。
    XElement Content = new XElement("content", from el in xml.Elements() select el.Element("content").Elements());
    

    我该如何获得这两个节点?

  • 请查看此链接:https://dev59.com/zU3Sa4cB1Zd3GeqPxbf2 - Amsakanna
    3个回答

    6
    var elements = 
        from element in xml.Root.Elements()
        where element.Name == "content" ||
              element.Name == "index"
        select element;
    var newContentNode = new XElement("content", elements);
    

    谢谢!这正是我在寻找的! :) - podeig

    1

    一旦你加载了XML文件,你可以通过以下方式获取所有内容节点:

    var cons = from con in xmlFile.Descendants("content");
    

    同样地,您可以获取索引节点如下:

    var idxs = from idx in xmlFile.Descendants("index")
    

    我认为您不能使用一个查询字符串来查询两个节点。


    1

    使用lambda:

        var elements = document
            .Descendants()
            .Where(element => element.Name == "content" || element.Name == "index");
    

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接