2011-10-27 45 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( 「設置」)爲空。爲什麼它是空的?

+1

您的示例XML已損壞,順便說一句 - 最後一行應該是結束標記。你的真實檔案有多有代表性? –

+0

對不起,當我縮短文件,把它放在這裏,我錯誤地刪除它:( –

回答

4

已加載的元素這已經是<settings>元素 - 即元素沒有任何<settings>後代。 (Descendants沒有返回你null,順便說一句 - 。它返回你一個空序列有一個很大的區別)

如果將其更改爲

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

那麼它應該沒問題 - 或者只是加載它作爲XElement並找到<prospect>後代,因爲您只有一個<settings>元素無論如何...

+0

我找到後代,它沒關係:) –