LINQ to XML возвращает второй элемент - PullRequest
1 голос
/ 28 апреля 2010

Я пытаюсь вернуться ко второму элементу XML из Flickr.

Это всегда возвращает первый элемент:

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

А это не получается?

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

Ответы [ 3 ]

1 голос
/ 28 апреля 2010

Вы можете использовать ElementAt , чтобы получить элемент в указанной позиции в перечислимом:

imageUrl = (string)item.Elements(ns + "link").ElementAt(1).Attribute("href");
1 голос
/ 28 апреля 2010

Попробуйте .Skip(1).First().Attribute.... во втором фрагменте.

0 голосов
/ 28 апреля 2010

Согласно документации Элемент возвращает первого соответствующего дочернего элемента - Элементы возвращают всех соответствующих дочерних элементов Чтобы получить второй, просто пропустите первый предмет и возьмите следующий.

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...