Deserialize XML into objects c#



I have the following XML which I need to deserialize.



<?xml version="1.0" encoding="UTF-8" ?>
<event code="2wuj0ticofhzt" self="/events/2wuj0ticofhzt" revision="1260234836">
<name>Test Event 2013</name>
<partner-settings>
<partner-setting>
<registration-type code="1yfopbwhk" link="/registration-types/1yfopbwhk" />
<personnel code="3eclag1dsrjfi">
<free-badges>unlimited</free-badges>
</personnel>
<personnel code="0nxgc6mfec8yh">
<free-badges>3</free-badges>
</personnel>
</partner-setting>
<partner-setting>
<registration-type code="1ygg67prw" link="/registration-types/1ygg67prw" />
</partner-setting>
</partner-settings>
</event>


Here are my classes that I have created (I only need to deserialize the fields I have in my classes)



[XmlRoot("event")]
public class Event
{
[XmlAttribute("code")]
public string Code { get; set; }

[XmlAttribute("name")]
public string EventName { get; set; }

[XmlArray("partner-settings")]
public List<PartnerSetting> PartnerSettings { get; set; }
}

[XmlType("partner-setting")]
public class PartnerSetting
{
[XmlElement("registration-type")]
public RegistrationType RegistrationType { get; set; }

[XmlArray("personnel")]
public List<Personnel> Personnel { get; set; }
}

[XmlRoot("registration-type")]
public class RegistrationType
{
[XmlAttribute("code")]
public string Code { get; set; }

[XmlAttribute("name")]
public string RegistrationTypeName { get; set; }

[XmlElement("type")]
public string Type { get; set; }
}

[XmlType("personnel")]
public class Personnel
{
[XmlAttribute("code")]
public string Code { get; set; }

[XmlElement("free-badges")]
public int FreeBadges { get; set; }
}


When I currently deserialize the above XML it all works except from the Personnel object where I get 0 returned when I'm expecting to see 2.


I'm not doing anything differently when I'm trying to return a personnel list (i.e. XMLArray attribute, return a List) to a partner setting list but for some reason it won't deserialize.


If anybody has any suggestions it would be much appreciated


No comments:

Post a Comment