首页 > 解决方案 > 去 XML 抑制自动生成的标签?

问题描述

我正在尝试在 Go 下实现最初用 Fortran 编写的 XML 格式。格式已经指定,所以我不能随意更改标准。不幸的是,该格式包含未包含在 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>

标签: go

解决方案


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

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

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


推荐阅读