我有两个结构以便编组成XML
//Accounts ...
type Accounts struct {
XMLName xml.Name `xml:"account"`
AccNumber string `xml:"iban"`
}
//Accounts ...
type AccountsList struct {
XMLName xml.Name `xml:"response"`
ResultCode string `xml:"resultCode"`
Accounts []Accounts `xml:"result"`
}
我正在获取下一个xml结构:
<response>
<resultCode>...</resultCode>
<account>
<iban>...</iban>
</account>
<account>
<iban>...</iban>
</account>
</response>
但是我还需要<result>
标签,所以我需要下一个xml:
<response>
<resultCode>...</resultCode>
<result>
<account>
<iban>...</iban>
</account>
<account>
<iban>...</iban>
</account>
<result>
</response>
为什么Golang XML编组器忽略xml:"result"
结构中的AccountsList
这个东西?
是否可以在不使用第三种结构的情况下获得我想要的结果?
答案 0 :(得分:4)
您可以将字段标签名称从result
更改为result>account
:
type AccountsList struct {
XMLName xml.Name `xml:"response"`
ResultCode string `xml:"resultCode"`
Accounts []Accounts `xml:"result>account"`
}
这将用accounts
标签包裹您的result
切片。
答案 1 :(得分:0)
请仔细阅读下面的代码,我已经在实际环境中对其进行了测试,并且没有出现任何错误。
func main() {
var al AccountsList
output, err := xml.MarshalIndent(al, " ", " ")
fmt.Println("Hello, playground", err)
fmt.Println(string(output))
}
您也可以使用此link对其进行测试。