私は間違った方法でXmlElementで装飾されたクラスを持っていますが、必要なフィールドを識別できる属性も持っています。C#のXmlSerializerは、特定の属性によって同じ名前の複数のXmlElementで装飾されたクラスを逆シリアル化しますか?
[IWantToSerializeThisAttribute]を変更して、プロパティ名またはXmlElement名を変更すると、コードのメンテナンスが頻繁になるため、他の属性をMySerializableClassに追加できます。ここで
はクラスが定義されている方法は次のとおりです。
[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")]
を見つけることですので、今、私はおそらくエラーになります
と重複するタグが表示されます。
とにかく私は2つの性質が違う
[IWantToSerializeThisAttribute]
を持っています。
「IwantToSerializeThisAttribute」プロパティのみをキャッチして評価し、他のプロパティを無視するようにXmlSerializer.Deserializeに指示できますか?
シリアル化をXmlOverrideAttributesで変更することはできませんが、逆シリアル化中に行う方法があります。
ありがとうございました
xmlタグが2つ以上発生している場合、配列が必要です。[XmlElement( "DocumentId")] public List DOC_ID {get;セット; } –
jdweng
明白な答えはあなたがそれが使用されることを望んでいないので、属性を削除することです。なぜあなたはシリアル化したくないプロパティに 'XmlElement'属性を持っていますか? –
私たちにあなたのXMLを教えてください。 –