Linq - 获得根后代

时间:2011-10-27 11:23:03

标签: c# xml linq

xml文件就是这个:

<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(“settings”)为空。为什么它是空的?

1 个答案:

答案 0 :(得分:4)

您已经加载了一个元素,它已经是<settings>元素 - 元素没有任何<settings>个后代。 (顺便说一下,Descendants没有给你null返回 - 它会给你一个空序列。这有很大的不同。)

如果您将其更改为

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

然后它应该没问题 - 或者只是将其加载为XElement并找到<prospect>后代,因为你只有一个<settings>元素...