Выбор имени автора в ленте Atom с помощью LINQ (C #) - PullRequest
5 голосов
/ 19 ноября 2008

Я пытаюсь выбрать поле «имя» из узла автора в ленте ATOM с помощью LINQ. Я могу получить все поля, которые мне нужны, вот так:

XDocument stories = XDocument.Parse(xmlContent);
XNamespace xmlns = "http://www.w3.org/2005/Atom";
var story = from entry in stories.Descendants(xmlns + "entry")
            select new Story
            {
                Title = entry.Element(xmlns + "title").Value,
                Content = entry.Element(xmlns + "content").Value
            };

Как бы я выбрал поле автора -> имя в этом сценарии?

Ответы [ 2 ]

5 голосов
/ 19 ноября 2008

Вы в основном хотите:

entry.Element(xmlns + "author").Element(xmlns + "name").Value

Но вы можете захотеть обернуть это дополнительным методом, чтобы вы могли легко предпринять соответствующие действия, если отсутствуют элементы author или name. Вы также можете подумать о том, что вы хотите, чтобы произошло, если существует более одного автора.

В ленте также может быть элемент автора ... просто еще одна вещь, которую нужно иметь в виду.

3 голосов
/ 19 ноября 2008

Это может быть что-то вроде этого:

        var story = from entry in stories.Descendants(xmlns + "entry")
                    from a in entry.Descendants(xmlns + "author")
                    select new Story
                    {
                        Title = entry.Element(xmlns + "title").Value,
                        Content = entry.Element(xmlns + "subtitle").Value,
                        Author = new AuthorInfo(
                            a.Element(xmlns + "name").Value,
                            a.Element(xmlns + "email").Value,
                            a.Element(xmlns + "uri").Value
                         )
                    };
...