为了账号安全,请及时绑定邮箱和手机立即绑定

Go:将不同类型的 Marshall 数组/切片转换为 XML

Go:将不同类型的 Marshall 数组/切片转换为 XML

Go
慕尼黑8549860 2021-12-27 10:44:55
我有一个结构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>?
查看完整描述

1 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

您需要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))

}


查看完整回答
反对 回复 2021-12-27
  • 1 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信