2011-10-27 13 views
2

xmlファイルを取得するには、このいずれかになります。のLINQ - ルートの子孫

<settings y="1" x="0"> 
    <prospect aksdj="sdf"> 
     <image path="images/1.jpg"/> 
    </prospect> 
    <prospect aksdfasdj="safafdf"> 
     <image path="images/2.jpg"/> 
    </prospect> 
</settings> 

私がイメージタグで両方の行を取得したいです。

XElement doc = XElement.Load(@"C:\Users\John\Desktop\File.xml"); 
var result = (from c in doc.Descendants("settings") 
         select new 
         { 
          name = c.Element("prospect").Value 
         }).ToList(); 

しかし、doc.Descendants( "設定")nullである:

私のコードはこれです。なぜそれはnullですか? 要素はどんな<settings>子孫を持っていないこと -

+1

サンプルXMLが壊れています。最後の行は終了タグにする必要があります。あなたの実際のファイルをどのように代表していますか? –

+0

申し訳ありませんが、私は間違ってそれをここに置くためにファイルを短縮したとき:( –

答えて

4

あなたは既に<settings>要素である要素をロードしました。 (Descendantsを経由して、あなたにnullを返していません - 。。それはあなたの空のシーケンスを返すだ大きな違いがあります)

あなたは

XDocument doc = XDocument.Load("..."); 

に変更する場合、それは大丈夫でなければなりません - あるいは単にXElementとしてロードし、いずれも<settings>という要素が1つしかない場合、<prospect>の子孫を見つけてください。

+0

私は子孫を見つけた、それは大丈夫です:) –