代码之家  ›  专栏  ›  技术社区  ›  Tomas Beblar

反序列化XML。捕捉错误?

  •  0
  • Tomas Beblar  · 技术社区  · 8 年前

    我有以下反序列化函数(代码段)将XML转换为对象。然而,我需要捕捉错误,它似乎在默默地失败。我想知道什么时候XML与对象不匹配。它没有抛出任何错误或异常,只是忽略了值。XmlDeserialization事件存在,但充满空值。

       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);
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Tomas Beblar    8 年前

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