2010-05-12 5 views
4

je XML telsplus d'un nœud XML en utilisant LINQ

<root> 
    <content> 
     .... 
    </content> 
    <index> 
     .... 
    </index> 
    <keywords> 
     .... 
    </keywords> 
</root> 

Mais je dois choisir juste et nœuds.

<content> 
    .... 
</content> 
<index> 
    .... 
</index> 

J'ai découvert comment sélectionner un seul nœud.

XElement Content = new XElement("content", from el in xml.Elements() select el.Element("content").Elements()); 

Comment puis-je obtenir les deux nœuds?

+0

Cocher cette http://stackoverflow.com/questions/2810623/no-output-from-linq-to-xml – Amsakanna

Répondre

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

Merci! C'est précisément ce que je cherchais! :) – podeig

1

Une fois que vous avez le fichier xml chargé, vous pouvez obtenir tous les nœuds de contenu par:

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

et vous pouvez de la même obtenir les noeuds d'index comme:

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

Je ne pense pas vous pouvez interroger deux nœuds en utilisant une chaîne de requête.

1

utilisant lambda:

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