I'm trying to select the "name" field from the author node in an ATOM feed using LINQ. I can get all the fields I need like so:
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
};
How would I go about selecting the author -> name field in this scenario?
You basically want:
entry.Element(xmlns + "author").Element(xmlns + "name").Value
But you might want to wrap that in an extra method so you can easily take appropriate action if either the author or name elements are missing. You might also want to think about what you want to happen if there's more than one author.
The feed might also have an author element... just another thing to bear in mind.
It could be something like this:
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
)
};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With