go - 去 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>
解决方案
您可以使用,chardata
修饰符来指示结构成员的值应该用作 XML 元素的字符数据。对于您的示例,这将是:
type FrequencyList struct {
...
Frequencies string `xml:",chardata"`
}
您可以在此处尝试使用此更改的示例:https: //play.golang.org/p/oBa8HuE-57d
推荐阅读
- java - 如何将没有标题的文本文件读入ArrayList
- python - 如何从第一页解析steam网站的所有游戏数据?我正在使用python
- python - 使用matplotlib将图例中的标记与图例标题左对齐
- python - 将打印语句输出写入文件的最佳方法 - Python 和多处理
- postgresql - Postgres 中记录事件发生时间的惯用方式
- python - 安装 pyaudio 时出错:需要 Microsoft Visual C++ 14.0
- javascript - 是否可以向对象数组中的过滤对象添加其他属性?
- java - Datanucleus 5.2.x 6.0.0-m1 JDO Enum 使用,生成的代码未编译
- google-chrome - 从 Chrome 扩展程序打开 Google Chrome 设备模式
- reactjs - 使用 Reactstrap 时出现媒体对象对齐问题