2010-11-11 20 views
5

Tengo un requisito para crear XML que tiene este aspecto:Cómo crear un atributo XML (en lugar de un elemento) usando FSharp?

<record id="100000000000000000" type="Message"> 
    ...a bunch of xml ... 
</record> 

lugar, con el código FSsharp que estoy usando, yo estoy haciendo esto:

<record> 
    <type>Message</type> 
    <id>118448</id> 
    ...a bunch of xml.... 
</record> 

aquí es lo que me Actualmente haciendo:

type record(id:int, sr:sender, recipients: recipient array, atts : attachment array, con : conversation, madeDate : creation) = 
    let mutable id: int = id 
    let mutable typ = "Message" 
    let mutable creation = madeDate 
    let mutable sender = sr 
    let mutable recipients = recipients 
    let mutable conversation = con 
    let mutable attachments = atts 

    public new() = 
     record(-1, sender(-1,"Joe","Plumber","[email protected]"), Array.empty, Array.empty, conversation(), creation())  

    [<XmlElement("type")>] 
    member this.Type with get() = typ and set v = typ <- v 

    [<XmlElementAttribute("id")>] 
    member this.Id with get() = id and set v = id <- v 

    [<XmlElement("creation")>] 
    member this.Creation with get() = creation and set v = creation <- v 

    [<XmlElement("sender")>] 
    member this.Sender with get() = sender and set v = sender <- v 

    [<XmlArrayAttribute("recipients")>] 
    [<XmlArrayItem(typeof<recipient>, ElementName = "recipient")>] 
    member this.Recipients with get() = recipients and set v = recipients <- v 

    [<XmlElement("conversation_info")>] 
    member this.Conversation with get() = conversation and set v = conversation <- v 

    [<XmlArrayAttribute("attachments")>]   
    [<XmlArrayItem(typeof<attachment>, ElementName = "attachment")>] 
    member this.Attachments with get() = attachments and set v = attachments <- v 

Respuesta

6

Creo que quieres XmlAttributeAttribute en lugar de XmlElementAttribute.

Tenga en cuenta que

[<XmlElement>] 

y

[<XmlElementAttribute>] 

son la misma cosa (igual que en C#).

Cuestiones relacionadas