The following code works but only as long as each element of the XML has an “Id” attribute.
However, if an element does not have an id attribute, LINQ throws an NullReferenceException.
How do I specify that if there is no Id attribute, just assign a null or blank?
using System;
using System.Linq;
using System.Xml.Linq;
namespace TestXmlElement2834
{
class Program
{
static void Main(string[] args)
{
XElement content = new XElement("content",
new XElement("item", new XAttribute("id", "4")),
new XElement("item", new XAttribute("idCode", "firstForm"))
);
var contentItems = from contentItem in content.Descendants("item")
select new ContentItem
{
Id = contentItem.Attribute("id").Value
};
foreach (var contentItem in contentItems)
{
Console.WriteLine(contentItem.Id);
}
Console.ReadLine();
}
}
class ContentItem
{
public string Id { get; set; }
public string IdCode { get; set; }
}
}
(2nd edit)
Ooh – found an easier way ;-p
This works thanks to the flexible static conversion operators on
XAttributeetc.(original)
(1st edit)
Or add an extension method:
and use: