簡體   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