xml - 如何使用一个字段作为标记将另一个字段作为值将 go struct 序列化为 XML

标签 xml go

我有一些结构:

type Tokens struct {
}

type Token struct {
Type string
Value string
}

I need to get XML file as the output:
<tokens>
<keyword> x</keyword>
<identifier> y </identifier>
<symbol> z </symbol>
</tokens>

其中keyword, identifier or symbol是Type字段的值,x,y,x是Value字段的值

具体来说,我不需要将每个标记包装到标签中。 token 有多种类型,但对于某些值只有一种类型。

标准库 encoding/xml 没有为此提供现成的解决方案。貌似只提供字段名作为标签的能力

最佳答案

您可以使用编码/xml。即:

package main

import (
    "encoding/xml"
    "fmt"
)

func main() {
    type Token struct {
        Keyword    string `xml:"Keyword"`
        Identifier string `xml:"Identifier"`
        Symbol     string `xml:"Symbol"`
    }
    type Tokens struct {
        Tokens []Token `xml:"Token"`
    }
    data := Tokens{[]Token{Token{Keyword: "x", Identifier: "y", Symbol: "z"},
        Token{Keyword: "x1", Identifier: "y1", Symbol: "z1"},}}

    xml, _ := xml.MarshalIndent(data, "","   ")
    fmt.Println(string(xml))
}

关于xml - 如何使用一个字段作为标记将另一个字段作为值将 go struct 序列化为 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57769800/

相关文章:

go - 无法从 client-go -/serviceaccount/token : no such file 连接到 kubectl

multithreading - 等待共享计时器的多个 go 例程导致竞争

mysql - 为什么 go-sql-driver 无法处理 MySQL bigint 字段中的 NULL?

python - 等效于 Python 的列表推导

android - 编辑 dimens.xml 的工具 (Android)

go - 无法在 Golang 中的 GET 请求的 header 中传递 Bearer token

php - 为什么这些 XML 标记会在我的 PHP 中产生错误?

java - Java 中的 XML 到 XML 的转换

java - XMLReader 搜索相对于主应用程序的 DTD 文件而不是 XML 文件

javascript - 使用javascript压缩xhtml客户端?