我有一个结构
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>
?
答案 0 :(得分:1)
您需要明确命名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))
}