Сериализация XML с помощью FSharp - PullRequest
1 голос
/ 08 февраля 2011

Я пытаюсь создать какой-то XML-код, подобный этому:

<parameter name="srid" type="java.lang.Integer">24729</parameter>

обратите внимание, что тег называется параметром и имеет два атрибута: имя и тип в дополнение к фактическому значению.

Вот что у меня есть:

type parameter(paramName, javaType, paramValue) =
    let mutable pName = paramName
    let mutable pType = javaType
    let mutable pValue = paramValue

    public new() = 
        new parameter("","","")

    [<XmlAttributeAttribute("name")>]    
    member this.PName with get() = pName and set v = pName <- v

    [<XmlAttributeAttribute("type")>]
    member this.PType with get() = pType and set v = pType <- v

Может быть, я вообще иду в неправильном направлении, но я не уверен, как представить фактическое значение тега?

обновление: возможно, я должен упомянуть, что этот параметр будет одним из четырех внутри большего тега "параметры". Вот так:

<parameters>
    <parameter name="srid" type="java.lang.Integer">24729</parameter>
    ...other parameter tags...
</parameters>

1 Ответ

2 голосов
/ 08 февраля 2011

хорошо, так что вам нужно

[<XmlText>]

атрибут для свойства, для которого вы хотите сериализовать значение узла

так что, в вашем случае, у вас будет что-то вроде

type parameter(paramName, javaType, paramValue) =
    let mutable pName = paramName
    let mutable pType = javaType
    let mutable pValue = paramValue

    public new() = new parameter("","","")

    [<XmlAttributeAttribute("name")>]    
    member this.PName with get() = pName and set v = pName <- v

    [<XmlAttributeAttribute("type")>]
    member this.PType with get() = pType and set v = pType <- v

    [<XmlText>]
    member this.PValue with get() = pValue and set v = pValue <- v
...