Я работал с 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);