2010-12-02 25 views
1

Le Xml se présente comme suit:XmlSerializer et XmlArrayItem

<Publisher sequence="1" primaryIndicator="Yes"> 
    <PublisherID idType="Shortname">ysc</PublisherID> 
    <PublisherID idType="xy" encrypted="VlsC1V9K23Leo1BAOk6nxxROZAPKSAny" library="http://xys.abc.com">21503</PublisherID> 
    <PublisherName nameType="Legal">xys legal name</PublisherName> 
</Publisher> 

Et ma classe est mappée comme:

type PublisherId() = 
    [<DefaultValue>] val mutable _idType: string ; 
    [<DefaultValue>] val mutable _encrypted: string ; 
    [<DefaultValue>] val mutable _library: string ; 
    [<DefaultValue>] val mutable _value: string ; 

    [<XmlAttribute>] member this.idType with get() = this._idType and set(v) = this._idType <- v 
    [<XmlAttribute>] member this.encrypted with get() = this._encrypted and set(v) = this._encrypted <- v 
    [<XmlAttribute>] member this.library with get() = this._library and set(v) = this._library <- v 
    [<XmlTextAttribute>] member this.value with get() = this._value and set(v) = this._value <- v 

type Publisher() as this = 
    [<DefaultValue>] val mutable _sequence : int 
    [<DefaultValue>] val mutable _primaryIndicator: string ; 
    [<DefaultValue>] val mutable _publisherIds : List<PublisherId> 

    do 
     this._publisherIds <- new List<PublisherId>(); 

    [<XmlAttribute>] member this.sequence with get() = this._sequence and set(v) = this._sequence <- v 
    [<XmlAttribute>] member this.primaryIndicator with get() = this._primaryIndicator and set(v) = this._primaryIndicator <- v 

    [<XmlArrayAttribute>] 
    [<XmlArrayItem(typeof<PublisherId>, ElementName = "PublisherID")>] 
    member this.PublisherID with get() = this._publisherIds and set(v) = this._publisherIds <- v 

et je modifie également les attributs membres du elemetn en question:

[<XmlArrayItem(typeof<PublisherId>, ElementName = "PublisherID")>] 
    member this.PublisherID with get() = this._publisherIds and set(v) = this._publisherIds <- v 

Le problème est que, il ne remplit pas les champs _publisherIds. J'ai essayé de passer à un tableau et cela n'a pas aidé non plus. Un point d'arrêt dans le setter n'est jamais touché, donc je pense qu'il y a quelque chose qui ne va pas avec les annotations.

J'ai eu du succès avec des structures telles que:

<Publisher sequence="1" primaryIndicator="Yes"> 
    <PublisherIDs> 
    <PublisherID idType="Shortname">ysc</PublisherID> 
    <PublisherID idType="xy" encrypted="VlsC1V9K23Leo1BAOk6nxxROZAPKSAny" library="http://xys.abc.com">21503</PublisherID> 
    </PublisherIDs> 
    <PublisherName nameType="Legal">xys legal name</PublisherName> 
</Publisher> 

en utilisant des attributs similaires (mais en C#), mais modifier la structure XML est pas l'option Ann - car cela est comming d'un fournisseur.

Remarque: Je suis en train de marquer que C# ainsi que ce groupe peut être en mesure d'aider avec les annotations. S'il vous plaît supprimer avec mes excuses, si c'est un tag inapproprié.

Merci

Répondre