LINQ to XML исключение, когда нет итогового узла - PullRequest
0 голосов
/ 11 февраля 2012

Я работал с LINQ to XML и столкнулся с проблемой. Я был бы очень признателен за любую помощь. Я новичок в LINQ to XML, но мне было легко с ним работать.

У меня есть два разных канала синдикации, которые я объединяю в один канал синдикации с помощью Union. Финальный синдикационный канал содержит 10 элементов.

Я пытаюсь записать канал синдикации в файл XML, используя XDocument и XElement. Я был в состоянии сделать это успешно по большей части. Но некоторые элементы в ленте не имеют описания в качестве элемента узла. Когда я добираюсь до элементов, у которых нет этого элемента узла, я получаю исключение, поскольку у меня нет узла описания для одного из элементов. Как я могу проверить элементы, чтобы увидеть, есть ли узел с именем description, прежде чем я начну писать файл XML? Если элемент не содержит узел описания, как я могу заполнить его значением по умолчанию? Не могли бы вы предложить мне какое-нибудь решение? Спасибо за ваше время!

SyndicationFeed combinedfeed = new SyndicationFeed(newFeed1.Items.Union(newFeed2.Items).OrderByDescending(u => u.PublishDate));

//save the filtered xml file to a folder
XDocument filteredxmlfile = new XDocument(
             new XDeclaration("2.0", "utf-8", "yes"),
             new XElement("channel",
             from filteredlist in combinedfeed.Items
             select new XElement("item",
                  new XElement("title", filteredlist.Title.Text),
                  new XElement("source", FormatContent(filteredlist.Links[0].Uri.ToString())[0]),
                  new XElement("url", FormatContent(filteredlist.Links[0].Uri.ToString())[1]),
                  new XElement("pubdate", filteredlist.PublishDate.ToString("r")),
                  new XElement("date",filteredlist.PublishDate.Date.ToShortDateString()),
// I get an exception here as the summary/ description node is not present for all the items in the syndication feed
new XElement("date",filteredlist.Summary.Text)
                  )));
string savexmlpath = Server.MapPath(ConfigurationManager.AppSettings["FilteredFolder"]) + "sorted.xml";
filteredxmlfile.Save(savexmlpath);

1 Ответ

0 голосов
/ 11 февраля 2012

Просто проверьте null:

new XElement("date",filteredlist.Summary !=null ? filteredlist.Summary.Text : "default summary")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...