我有一個以錯誤的方式用XmlElement裝飾的類,但它也具有可以讓我識別我需要的字段的屬性。XmlSerializer在C#中,用一個特定的屬性反序列化一個具有相同名稱的多個XmlElement裝飾的類?
我只能修改[IWantToSerializeThisAttribute]並將其他屬性添加到MySerializableClass,因爲對屬性名稱或XmlElement名稱的任何修改都會涉及繁重的代碼維護。
這裏是如何類已經被定義爲:
[XmlRoot("ARandomXmlRoot")]
public class MySerializableClass
{
//CAMPI DIR_DOCUMENTI
//[MetadatoDocumentoAlfresco] è un attributo che serve per selezionare i campi per l'aggiornamento dati massivo su alfresco
[IWantToSerializeThisAttribute]
[XmlElement("DocumentCode")]
public string DOC_CODE { get; set; }
[IWantToSerializeThisAttribute]
[XmlElement("DocumentId")]
public string DOC_ID { get; set; }
[XmlElement("DocumentCode")]
public string DOC_CODE_FOR_EMPLOYEES { get; set; }
[XmlElement("DocumentId")]
public string DOC_ID_FOR_EMPLOYEES { get; set; }
}
現在,如果我做
XmlSerializer.Deserialize(xmlString, typeof(MySerializableClass));
我將最有可能得到一個錯誤,因爲XmlSerializer的是找到2倍
[XmlElement("DocumentCode")]
並認爲它是重複的標籤。
反正我有一個
[IWantToSerializeThisAttribute]
,使2個屬性不同。
我可以告訴XmlSerializer.Deserialize只捕獲和確定「IwantToSerializeThisAttribute」屬性並忽略其他屬性嗎?
我不能使用XmlOverrideAttributes更改序列化,但也許有一些方法可以在反序列化過程中完成。
謝謝大家
如果xml標籤發生了兩次比您需要的數組:[XmlElement(「DocumentId」)] public List DOC_ID {get;組; } –
jdweng
顯而易見的答案是刪除該屬性,因爲您不希望它被使用。爲什麼你不希望序列化的屬性上有'XmlElement'屬性? –
向我們展示您的xml。 –