我试图在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>
答案 0 :(得分:1)
您可以使用,chardata
修饰符指示struct成员的值应用作XML元素的字符数据。对于您的示例,这将是:
type FrequencyList struct {
...
Frequencies string `xml:",chardata"`
}
您可以在此处尝试使用此更改的示例:https://play.golang.org/p/oBa8HuE-57d