I have the following XML
<a>
<client client_id="6881937" clt_code="0" clt_date="" sms_block="N" active_serv="N" phone="77777645521" threshold_amount="1" clt_charge="" clt_charge_id="" > </client>
<card>
<a card_num="KZ5392...6449" card_id="66783573" crd_code="0" crd_date="" />
<a card_num="552204...9124" card_id="66783574" crd_code="0" crd_date="" />
<a card_num="KZ7392...4128" card_id="14335135" crd_code="0" crd_date="" />
<a card_num="440564...7683" card_id="14335136" crd_code="0" crd_date="" />
</card>
</a>
Now, I would unmarshal it into the golang struct such as:
type OwCheckClient struct {
XMLName xml.Name `xml:"a"`
Client client `xml:"client"`
Cards cards `xml:"card"`
}
type client struct {
client_id string `xml:"client_id,attr"`
clt_code string `xml:"clt_code,attr"`
sms_block string `xml:"sms_block,attr"`
active_serv string `xml:"active_serv,attr"`
phone string `xml:"phone,attr"`
threshold_amount string `xml:"threshold_amount,attr"`
clt_charge string `xml:"clt_charge,attr"`
clt_charge_id string `xml:"clt_charge_id,attr"`
}
type cards struct {
Card []card `xml:"a"`
}
type card struct {
card_num string `xml:"card_num,attr"`
card_id string `xml:"card_id,attr"`
crd_code string `xml:"crd_code,attr"`
}
XML parser detects true amount of tags,for instance, "a" in "card". But it doesn't detect values of these attributes. That is Printf output below after xml.Unmarshal:
v = &models.OwCheckClient{XMLName:xml.Name{Space:"", Local:"a"}, Client:models.client{client_id:"", clt_code:"", sms_block:"", active_serv:"", phone:"", threshold_amount:"", clt_charge:"", clt_charge_id:""}, Cards:models.cards{Card:[]models.card{models.card{card_num:"", card_id:"", crd_code:""}, models.card{card_num:"", card_id:"", crd_code:""}, models.card{card_num:"", card_id:"", crd_code:""}, models.card{card_num:"", card_id:"", crd_code:""}}}}
What's wrong?