LINQ to XML返回第二个元素

时间:2010-04-27 20:57:39

标签: c# linq-to-xml

我正在尝试返回第二个< link>来自Flickr的XML中的元素。

这总是返回第一个元素:

ImageUrl = item.Element(ns + "link").Attribute("href").Value,

这会失败吗?

ImageUrl = item.Elements(ns + "link")[1].Attribute("href").Value,

3 个答案:

答案 0 :(得分:1)

您可以使用ElementAt将元素放在可枚举的指定位置:

imageUrl = (string)item.Elements(ns + "link").ElementAt(1).Attribute("href");

答案 1 :(得分:1)

在第二个代码段上尝试.Skip(1).First().Attribute....

答案 2 :(得分:0)

根据documentation元素返回第一个匹配的子元素 - Elements返回所有匹配的子元素。要获得第二项,只需跳过第一项,然后选择下一项。

ImageUrl = item.Elements(ns + "link").Skip(1).First().Attribute("href").Value;

如果你不能确定有两个孩子,你可以这样做:

XElement xe = item.Elements(ns + "link").Skip(1).FirstOrDefault();
if(xe != null)
{
    ImageUrl = ex.Attribute("href").Value;
}