问题描述
如何在没有根元素的情况下进行封送?
type Ids struct {
Id []string `xml:"id"`
}
Idsstr,_ := xml.Marshal(&Ids{[]string{"test1","test2"}})
<Ids><id>test1</id><id>test2</id></Ids>
应该没有Ids元素:
<id>test1</id><id>test2</id>
解决方法
type id string
func main() {
IdsStr,_ := xml.Marshal([]id{"test1","test2"})
fmt.Println(string(IdsStr))
}
或
type id string
type Ids struct {
Vals []id
}
func main() {
ids := &Ids{[]id{"test1","test2"}}
IdsStr,_ := xml.Marshal(ids.Vals)
fmt.Println(string(IdsStr))
}
0utput
<id>test1</id><id>test2</id>
,
...但是如何设置元素的自愿xml名称? Vals [] id xml:“ idSomeOther”在xml编组后返回id,因为它是类型的名称...我需要自定义类型id来键入IdXml,但是xml编组后应返回id。我怎么能得到它?
您可以使用XMLName xml.Name
,标记xml:",chardata"
(等等)来自定义struct
type Customs struct {
Vals []CustomXml
}
type CustomXml struct {
XMLName xml.Name
Chardata string `xml:",chardata"`
}
func main() {
customs := Customs{
[]CustomXml{
{XMLName: xml.Name{Local: "1"},Chardata: "XXX"},{XMLName: xml.Name{Local: "2"},Chardata: "YYY"}},}
res,_ := xml.Marshal(customs.Vals)
fmt.Println(string(res))
}
0utput
<1>XXX</1><2>YYY</2>
??另外,请查看src/encoding/xml/上的示例。