xml - Go:将不同类型的数组/slice 编码到 XML

标签 xml go

我有一个结构

type Response struct {
  Verbs []interface{}
}

还有一些其他的动词结构,比如

type Verb1 struct{
  Field1 string
  ...
}

type Verb2 struct{
  Field2 int
  ...
} 

如何从对象

&Response{Verbs: []interface{}{Verb1{}, Verb2{}, Verb1{}}}

像 XML 一样

<Response><Verb1>...</Verb1><Verb2>...</Verb2><Verb1>...</Verb1></Response>

?

我尝试使用 encoding/xml但它生成元素 Verbs太喜欢了

<Response><Verbs><Verb1>...</Verb1><Verb2>...</Verb2><Verb1>...</Verb1></Verbs></Response>

如何避免生成 <Verbs>

最佳答案

您需要明确命名 Verb 类型。

package main

import (
    "encoding/xml"
    "fmt"
)

type Root struct {
    Container []interface{}
}

type A struct {
    XMLName xml.Name `xml:"A"`
    Value   string   `xml:",chardata"`
}

type B struct {
    XMLName xml.Name `xml:"B"`
    Value   string   `xml:",chardata"`
}

func main() {
    r := Root{
        Container: []interface{}{
            A{Value: "a"},
            B{Value: "b"},
        },
    }
    text, _ := xml.Marshal(r)
    fmt.Println(string(text))
}

Playground

关于xml - Go:将不同类型的数组/slice 编码到 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36082838/

相关文章:

json - 从文件中解析json

go - 序列化结构以通过 UDP 发送它

c - Go 是否修复或共享 C 的危险隐式 -> 无符号转换?

c++ - QXmlSchema 管理包含吗?

javascript - 将 XML 字符串转换为 org.w3c.dom.Document?

java - 具有相同名称的 Jackson XML 标记和属性

sorting - 如何使用 Go olivere/elastic 基于多个字段进行排序

java - 在 Android 中创建波形 UI

php - 嵌套 simplexml

google-app-engine - 日志记录是否算作数据存储写入操作