I’m parsing XML. I normally parse it the way I show in the code below which is straightforward The problem is that I don’t own the XML I’m parsing and I can’t change it. Sometimes there is no thumbnail element (there are no tags) and I get an Exception.
Is there a way to maintain this simplicity and check if the element exists? Or do I have to get first an XElement list with LINQ, to then check it and fill only the existing object properties?
void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
XDocument dataDoc = XDocument.Load(new StringReader(e.Result));
var listitems = from noticia in dataDoc.Descendants("Noticia")
select new News()
{
id = noticia.Element("IdNoticia").Value,
published = noticia.Element("Data").Value,
title = noticia.Element("Titol").Value,
subtitle = noticia.Element("Subtitol").Value,
thumbnail = noticia.Element("Thumbnail").Value
};
itemList.ItemsSource = listitems;
}
[Edit]Jon Skeet’s answer should be the accepted answer. It is far more readable and easier to apply.[/edit]
Create an extension method like this :
then, change your code like this :
This approach allows you to keep a clean code with isolating the check of element presence. It also allow you to define a default value, which can be helpful