C# XmlSerializer的UnknownNode和UnknownAttribute事件怎么用

admin 百科 12
XmlSerializer 的 UnknownNode 和 UnknownAttribute 事件用于捕获反序列化时类中无对应成员的 XML 节点或属性,仅在调用 Deserialize 且遇到多余元素或属性时触发,不用于修复缺失字段,也不在序列化或类型转换错误时触发。

C# XmlSerializer的UnknownNode和UnknownAttribute事件怎么用-第1张图片-佛山资讯网

XmlSerializer 的 UnknownNode 和 UnknownAttribute 事件,是用来捕获反序列化时遇到的、类定义中没有对应成员的 XML 节点或属性的机制。它们不是用来“修复”缺失字段,而是帮你感知和调试结构不匹配问题,或实现柔性解析(比如跳过未知内容、记录日志、动态处理扩展字段)。

什么时候会触发这两个事件

只有在调用 Deserialize 方法反序列化 XML 字符串/流时,且 XML 中存在以下情况,才会触发:

  • UnknownNode:遇到类中没有对应 public 字段/属性的元素(比如多了一个 <version>1.2</version>,但你的类没写 public string Version { get; set; });
  • UnknownAttribute:遇到类中没有对应 public 属性标记 XmlAttribute 的属性(比如 XML 是 <user id="100">...</user>,但类里没写 [XmlAttribute("id")] public string Id { get; set; })。

注意:这两个事件 不会触发 在序列化(Serialize)过程中;也不会在节点/属性类型不匹配(如字符串赋给 int 字段)时报错时触发——那种情况直接抛异常,不走 Unknown 事件。

怎么订阅和使用事件

订阅方式很简单:在创建 XmlSerializer 实例后,给两个事件加处理方法,再调用 Deserialize

标签: node 处理器 c#

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~