Reputation: 555
I've have the following deserialization function (code snippet) to convert XML to Object. However, I need to catch errors and it seems to be failing silently. I'd like to know when there's a XML to object mismatch. It's not throwing any errors or exception, it's simply omitting the value. XmlDeserializationEvents e exists but is full of null values.
string Str_Response = Utilities.PostToURL(URL, XML_Request);
TextReader Txt_Reader = new StringReader(Str_Response);
XmlReaderSettings XML_Settings = new XmlReaderSettings();
XmlReader Xml_Reader = XmlReader.Create(Txt_Reader, XML_Settings, (string)null);
var deserializer = new XmlSerializer(typeof(UPS.TrackResponse));
XmlDeserializationEvents e = new XmlDeserializationEvents();
UPS.TrackResponse Response = (UPS.TrackResponse)deserializer.Deserialize(Xml_Reader, e);
Upvotes: 3
Views: 2358
Reputation: 555
Thanks to ryzngard who let me know that all I need to do is add event handlers to the XmlDeserializationEvents like so:
XmlDeserializationEvents e = new XmlDeserializationEvents();
e.OnUnknownAttribute += On_UnknownAttribute;
e.OnUnknownElement += On_UnknownElement;
e.OnUnknownNode += On_UnknownNode;
e.OnUnreferencedObject += On_UnreferencedObject;
And the relevant handlers stubs:
public static void On_UnknownAttribute(object sender, XmlAttributeEventArgs e)
{
}
public static void On_UnknownElement(object sender, XmlElementEventArgs e)
{
}
public static void On_UnknownNode(object sender, XmlNodeEventArgs e)
{
}
public static void On_UnreferencedObject(object sender, UnreferencedObjectEventArgs e)
{
}
The MSDN docs don't spell this out very well so I hope this helps someone in the future.
Upvotes: 6