2010-05-12 2 views
4

У меня есть такой XMLВыберите более одного узла из XML с помощью LINQ

<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()); 

Как получить оба узла?

+0

проверить это http://stackoverflow.com/questions/2810623/no-output-from-linq-to-xml – Amsakanna

ответ

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

Спасибо! Это именно то, что я искал! :) – podeig

1

После того, как у вас есть файл XML загружен, вы можете получить все узлы контента через:

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

и точно так же вы можете получить узлы индекса, как:

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

Я не думаю, вы можете запросить два узла, используя одну строку запроса.

1

Использование лямбда:

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