在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

回到顶部