2010-12-02 2 views
1

XML-файл выглядит следующим образом:XmlSerializer и 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> 

И мой класс отображается как:

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 

и я также изменил элемент атрибутов на elemetn в вопросе:

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

Проблема в том, что она не заполняет поля _publisherIds. Я попытался переключиться на массив, и это тоже не помогло. Точка останова в сеттере никогда не попадает, поэтому я думаю, что что-то не так с аннотациями.

Я имел успех со структурами, такими как:

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

с использованием подобных атрибутов (хотя и в C#), однако изменение структуры XML не вариант ANN - как это пришедшего от поставщика.

Примечание: Я помечен как C#, а также эта группа может помочь с аннотациями. Удалите с моими приложениями, если это неправильный тег.

Спасибо

ответ

Смежные вопросы