there!
I'm parsing xml document and unmarshal it's contents to the struct, but it returns only last item from the list instead of full list.
The list is serverList
and after unmarshalling it returns only last server
instance. Need help.
func main() {
xmlFile := `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<operationGetServerList>
<returnCode>0</returnCode>
<message></message>
<serverList>
<server>
<serverId>1</serverId>
<nauServer>Main</nauServer>
<serverIp>1.1.1.1</serverIp>
<serverPort>8080</serverPort>
<serverPortFtp>25</serverPortFtp>
<serverHome>true</serverHome>
<serverIsOnline>true</serverIsOnline>
</server>
<server>
<serverId>2</serverId>
<nauServer>Reg1</nauServer>
<serverIp>1.1.1.2</serverIp>
<serverPort>8080</serverPort>
<serverPortFtp>25</serverPortFtp>
<serverHome>false</serverHome>
<serverIsOnline>false</serverIsOnline>
</server>
</serverList>
</operationGetServerList>`
type serverInfo struct {
ServerID string `xml:"serverId"`
NauServer string `xml:"nauServer"`
ServerIP string `xml:"serverIp"`
ServerPort int `xml:"serverPort"`
ServerPortFtp int `xml:"serverPortFtp"`
ServerHome bool `xml:"serverHome"`
ServerIsOnline bool `xml:"serverIsOnline"`
}
type serverInstance struct {
Server serverInfo `xml:"server"`
}
type operationGetServerListResponce struct {
ReturnCode int `xml:"returnCode"`
Message string `xml:"message"`
ServerList []serverInstance `xml:"serverList"`
}
var sL operationGetServerListResponce
err := xml.Unmarshal([]byte(xmlFile), &sL)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v", sL)
}
Prints:
{ReturnCode:0 Message: ServerList:[{Server:{ServerID:4 NauServer:Res2 ServerIP:1.1.1.4 ServerPort:8080 ServerPortFtp:25 ServerHome:false ServerIsOnline:true}}]}