XmlSerializer.Deserialize - 忽略不必要的元素?

Ben*_*ers 3 c# serialization xsd xmlserializer

我有一个XSD架构,我已经生成了一个使用xsd.exe的类,我试图用来XmlSerializer.Deserialize从一个应该符合XSD架构的XML文件创建该类的实例.不幸的是,XML文件有一些额外的元素,架构不期望这些元素会导致System.InvalidOperationException抛出Deserialize.

我已经尝试<xs:any>在我的架构中添加元素,但这似乎没有任何区别.

我的问题是:有没有办法XmlSerializer.Deserialize忽略这些额外的元素?

kbr*_*ton 5

我通常会向所有实体类添加额外的属性或字段以获取额外的元素和属性,看起来像下面的代码:

[XmlAnyAttribute]
public XmlAttribute[] AnyAttributes;

[XmlAnyElement]
public XmlElement[] AnyElements;
Run Code Online (Sandbox Code Playgroud)

根据生成的代码的复杂程度,您可能无法在每个吸引人的实体上手动插入此代码.也许只是稍微乏味一点,在基类中定义这些属性并确保所有实体都继承基类.

为了公平归属,我在阅读DasBlog的源代码时首先介绍了这种模式.