GO中的XML解组
我有以下XMLGO中的XML解组,xml,go,Xml,Go,我有以下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
<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>
XML解析器检测标记的真实数量,例如“卡”中的“a”。但它不会检测这些属性的值。以下是xml.Unmarshal之后的Printf输出:
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:""}}}}
怎么了 客户机和卡结构中的字段是私有的(具有小写名称),因此XML解组器无法写入这些字段。将名称更改为以大写字母开头,它们将起作用 同样,不相关,但您不需要
卡
struct来加深一个标记。如果在那一层你不需要其他东西,你可以
Cards []card `xml:"card>a"`
进入您的
OwCheckClient
struct并删除cards
struct,它将正确反序列化。客户机和card
结构中的字段是私有的(具有小写名称),因此XML解组器无法写入它们。将名称更改为以大写字母开头,它们将起作用
同样,不相关,但您不需要卡
struct来加深一个标记。如果在那一层你不需要其他东西,你可以
Cards []card `xml:"card>a"`
进入您的OwCheckClient
struct并删除cards
struct,它将正确反序列化。thks,它解决了问题!thks,它解决了问题!