Выбор имени автора в ленте Atom с помощью LINQ (C #)

StackOverflow https://stackoverflow.com/questions/300376

  •  08-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь выбрать " имя " поле из авторского узла в ленте 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
            };

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

        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
                         )
                    };
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top