XmlSerializer – Check if property was present in XML

Recently I was parsing a large amount of XML files using the XmlSerializer class. While implementing the parser I came across a requirement where I had to check if a given property was null because it was specified as null or because the value was not present in the XML.

At first this caused me some headache because accessing the underlying XML file violates the abstraction provided by the serializer. Luckily, I recognised that the generated entity class (generated from XSD.exe) contains a lot of properties with the name <PropertyName>Specified. This is a very neat feature of the XmlSerializer. If you add a property with that name scheme it automatically sets the property to true when the corresponding element is present in the XML.

The property could look like this:

[System.Xml.Serialization.XmlIgnoreAttribute]
public bool MyPropertySpecified { get; set; }

Note: XmlIgnore is necessary to avoid having the artificial property serialised into XML when using the XmlSerializer to write XML. More details on the behaviour can be found in the class documentation here.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s