在GOlang中整理XML:字段为空(APPEND不起作用?)
我正在学习在Go中创建XML。这是我的代码:
type Request struct { XMLName xml.Name `xml:"request"`
Action string `xml:"action,attr"`
...
Point []point `xml:"point,omitempty"`
}
type point struct {
geo string `xml:"point"`
radius int `xml:"radius,attr"`
}
func main() {
v := &Request{Action: "get-objects"}
v.Point = append(v.Point, point{geo: "55.703038, 37.554457", radius: 10})
output, err := xml.MarshalIndent(v, " ", " ")
if err != nil {
fmt.Println("error: %v\n", err)
}
os.Stdout.Write([]byte(xml.Header))
os.Stdout.Write(output)
}
我希望输出是这样的:
<?xml version="1.0" encoding="UTF-8"?> <request action="get-objects">
<point radius=10>55.703038, 37.554457</point>
</request>
但是我得到的是:
<?xml version="1.0" encoding="UTF-8"?> <request action="get-objects">
<point></point>
</request>
我想念什么或做错什么?因为“ name,attr”东西对其他所有东西都适用(例如,如您所见,对于“ request”字段)。谢谢。
回答:
您的代码中有几处错误。在Go中使用编码包时,所有要编组/解组的字段都必须导出。请注意,结构本身不必导出。
因此,第一步是更改point
结构以导出字段:
type point struct { Geo string `xml:"point"`
Radius int `xml:"radius,attr"`
}
现在,如果要Geo
在点内显示字段,则必须添加,cdata
到xml标记中。最后,无需向omitempty
切片添加关键字。
type Request struct { XMLName xml.Name `xml:"request"`
Action string `xml:"action,attr"`
Point []point `xml:"point"`
}
type point struct {
Geo string `xml:",chardata"`
Radius int `xml:"radius,attr"`
}
去操场
以上是 在GOlang中整理XML:字段为空(APPEND不起作用?) 的全部内容, 来源链接: utcz.com/qa/408513.html