Разбор канала Atom через LINQ to XML - PullRequest
2 голосов
/ 07 июля 2010

Я написал фрагмент кода для извлечения элементарной информации из канала Atom (например, канала SO) с помощью запроса LINQ to XML.

Я хотел бы знать, были ли случаи, когда этот код могпотерпеть неудачу или если есть более элегантные способы.

Спасибо за поддержку.

var url = @"http://stackoverflow.com/feeds";
XDocument rss = XDocument.Load(url);

var q = from i in rss.Root.Elements("{http://www.w3.org/2005/Atom}entry")
select new {
        Title = i.Element("{http://www.w3.org/2005/Atom}title").Value, 
        URL = i.Element("{http://www.w3.org/2005/Atom}link").Attribute("href").Value};

1 Ответ

3 голосов
/ 07 июля 2010

Что ж, если Element("{http://www.w3.org/2005/Atom}title") или Element("{http://www.w3.org/2005/Atom}link") не существует, вы получите исключение нулевой ссылки.

Строка URL имеет два шанса потерпеть неудачу, так как вы ищете "href ", не проверяя, существует ли он на самом деле.

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

...