2011-10-27 25 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

我找到后代,它没关系:) –