You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中反序列化XML时忽略类中未定义的成员?

解决XML反序列化时忽略未定义元素的问题

你可以通过两种方式实现忽略XML中未在C#类里定义的内容:

方法一:订阅序列化器的未知元素事件

创建XmlSerializer实例后,订阅它的UnknownElement、UnknownAttribute和UnknownNode事件,事件处理逻辑留空即可让序列化器自动忽略这些未知内容。修改后的代码如下:

XmlSerializer serializer = new XmlSerializer(typeof(quotes.DOCUMENTS));
// 订阅事件,忽略未知元素、属性和节点
serializer.UnknownElement += (sender, e) => { };
serializer.UnknownAttribute += (sender, e) => { };
serializer.UnknownNode += (sender, e) => { };

using (Stream reader = new FileStream(quoteFile, FileMode.Open))
{
    var i = (DOCUMENTS)serializer.Deserialize(reader);
}

方法二:通过XmlAttributeOverrides配置序列化器

如果想在类层面统一配置忽略规则,可以使用XmlAttributeOverrides创建自定义序列化器,明确指定忽略未知元素:

XmlAttributeOverrides overrides = new XmlAttributeOverrides();
XmlAttributes attributes = new XmlAttributes();
// 开启忽略未知元素的配置
attributes.XmlIgnoreUnknownElements = true;
overrides.Add(typeof(quotes.DOCUMENTS), attributes);

XmlSerializer serializer = new XmlSerializer(typeof(quotes.DOCUMENTS), overrides);

using (Stream reader = new FileStream(quoteFile, FileMode.Open))
{
    var i = (DOCUMENTS)serializer.Deserialize(reader);
}

内容的提问来源于stack exchange,提问作者Haho76

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 15:15:07