Allen Rice Allen Rice - 4 years ago 140
C# Question

How to exclude null properties when using XmlSerializer

I'm serializing a class like this

public MyClass
{
public int? a { get; set; }
public int? b { get; set; }
public int? c { get; set; }
}


All of the types are nullable because I want minimal data stored when serializing an object of this type. However, when it is serialized with only "a" populated, I get the following xml

<MyClass ...>
<a>3</a>
<b xsi:nil="true" />
<c xsi:nil="true" />
</MyClass>


How do I set this up to only get xml for the non null properties? The desired output would be

<MyClass ...>
<a>3</a>
</MyClass>


I want to exclude these null values because there will be several properties and this is getting stored in a database (yeah, thats not my call) so I want to keep the unused data minimal.

Answer Source

I suppose you could create an XmlWriter that filters out all elements with an xsi:nil attribute, and passes all other calls to the underlying true writer.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download