繁体   English   中英

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

[英]XmlSerializer.Deserialize - ignore unnecessary elements?

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

我已经尝试将<xs:any>元素添加到我的模式中,但这似乎没有任何区别。

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

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

[XmlAnyAttribute]
public XmlAttribute[] AnyAttributes;

[XmlAnyElement]
public XmlElement[] AnyElements;

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

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

我认为没有办法做到这一点。 您必须修复架构或手动修改xsd.exe生成的代码以允许反序列化XML。 您还可以尝试在Visual Studio或任何其他具有架构支持的XML编辑器中打开XML文档+架构,以修复架构或XML文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM