使用XML抑制自动生成的标签吗?

时间:2019-06-07 02:32:54

标签: go

我试图在Go下实现XML格式,该格式最初是用Fortran编写的。已经指定了格式,因此我不能随意更改标准。不幸的是,该格式包括XML标记未包含的数据,因此我想禁止xml.Marshal提供的自动标记创建。

我已经研究了与编组相关的所有标准选项,如https://golang.org/pkg/encoding/xml/

所述

默认情况下,编组将使用结构变量名称,该名称可以被xml:定义覆盖。据我所知,没有任何定义可以抑制标签名称。

type SAO_FREQUENCY_LIST struct {
    Type string     `xml:",attr"`
    SigFig int      `xml:",attr"`
    Units string        `xml:",attr"`
    Description string  `xml:",attr"`
    Frequencies string  `xml:""`
}

我希望XML输出如下:

<FrequencyList Type="float" SigFig="5" Units="MHz" Description="Nominal Frequency">
    3.7 3.8
</FrequencyList>"

默认情况下xml.MarshalIndent(..)产生:

<FrequencyList Type="float" SigFig="5" Units="MHz" Description="”Nominal Frequency">
     <Frequencies>3.7 3.8</Frequencies>
</FrequencyList>

1 个答案:

答案 0 :(得分:1)

您可以使用,chardata修饰符指示struct成员的值应用作XML元素的字符数据。对于您的示例,这将是:

type FrequencyList struct {
    ...
    Frequencies string  `xml:",chardata"`
}

您可以在此处尝试使用此更改的示例:https://play.golang.org/p/oBa8HuE-57d