2012-04-20 2 views
1

questionはほぼ同じ名前でやりたいことをほぼ正確に行いますが、XML DOMがどのように見えるかはわかりません。Linqを使ってXDocumentを一般的に平坦化しますか?

私はこのような何かをしたいと思います:

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が含まれています。もう1つの質問は、要素にタグ名を手動で供給します。私は彼らが方法で静的にそれを設定する前に、彼らが何かを知っていません。

+0

どのような結果が必要ですか? –

+0

基本的に、XDocument(XML)内のすべてのノードの列挙。基本的には、ツリーとしてではなく、すべてのノードの集合を集合として扱うことができます。私は最近XPathが私の問題に適しているかもしれないことを発見しましたが、私はまだ上記について興味があります。 –

+1

これにXPathを使用できますか? [リンク] [1] [1]:http://stackoverflow.com/questions/3642829/how-to-use-xpath-with-xelement-or-linq – vansimke

答えて

5

文書内のすべての要素を列挙したいと思うように聞こえます。ここでは何も複雑なことはありません。引数なしでDescendants()メソッドを呼び出すだけで、ドキュメント内のすべての要素が返されます。

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

Doh!これはまさに私が必要としていたものです。ありがとうございました。 –

関連する問題