我有以下反序列化函数(代码片段)来将 XML 转换为对象。但是,我需要捕获错误并且它似乎无声无息地失败了。我想知道何时有 XML 对象不匹配。它不会抛出任何错误或异常,它只是省略了该值。XmlDeserializationEvents e 存在但充满空值。
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);
感谢 ryzngard,他让我知道我需要做的就是向 XmlDeserializationEvents 添加事件处理程序,如下所示:
XmlDeserializationEvents e = new XmlDeserializationEvents();
e.OnUnknownAttribute += On_UnknownAttribute;
e.OnUnknownElement += On_UnknownElement;
e.OnUnknownNode += On_UnknownNode;
e.OnUnreferencedObject += On_UnreferencedObject;
以及相关的处理程序存根:
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)
{
}
MSDN 文档并没有很好地说明这一点,所以我希望这对将来的人有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句