c# - 反序列化 XML。捕获错误?

标签 c# xml deserialization

我有以下反序列化函数(代码片段)来将 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;

以及相关的处理程序 stub :

  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 文档没有很好地说明这一点,所以我希望这对将来的人有所帮助。

关于c# - 反序列化 XML。捕获错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52106203/

相关文章:

java - Jersey MultiPartRequest 接收 null

java - 使用 Gson RuntimeTypeAdapterFactory 和 lenient = true 设置

c# - 将JSON反序列化为c#对象

c# - VS2010 Crystal 报表 : How do I set the logging level?

c# - 删除自定义 HashSet

c# - 如何连接到本地数据库的mdf,该数据库给出 "sql network interfaces error 52"

c# - 寻求处理具有重叠字段的结构构造函数的最佳方法

asp.net-mvc - ASP.NET MVC 和 text/xml 内容类型

html - 使用 xslt 列出 XML 文件的具有 <li><ui> 标签的项目

c# - 反射(reflect)属性 'Lists' 时出现错误