dsgwii4867 2016-03-18 11:08
浏览 44
已采纳

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

I have a struct

type Response struct {
  Verbs []interface{}
}

and some another structs of verbs like

type Verb1 struct{
  Field1 string
  ...
}

type Verb2 struct{
  Field2 int
  ...
} 

How to from object

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

to get XML like

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

?

I tried to use encoding/xml but it generates element Verbs too like

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

How to avoid generations of <Verbs>?

  • 写回答

1条回答 默认 最新

  • dongtiao0657 2016-03-18 11:32
    关注

    You need to name Verb types explicitly.

    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))
    }
    

    <kbd>Playground</kbd>

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?