我是Golang的新手,我一直在试图通过定义structs和xml.unmarshal.unmarshal.ner to the the丢弃,但结构是空的。这是我的XML:
var bodyXML = []byte('<?xml version="1.0" encoding="ISO-8859-1"?>
<smsBatchResponse>
<ok>
<![CDATA[CHECK_OK]]>
</ok>
</smsBatchResponse>')
这是我的代码:
type SmsBatchResponse struct {
Ok string `xml:"ok"`
}
var result SmsBatchResponse
xml.Unmarshal(bodyXML,result)
fmt.Println(result)
您应该做的第一件事是不是忽略xml.Unmarshal
可以给您的任何错误:
if err := xml.Unmarshal(bodyXML, result); err != nil {
fmt.Println(err)
}
这将(最终(给您许多错误:
错误编号1:默认情况下,XML解码器希望将XML编码在UTF-8中。您正在提供ISO-8859-1。可以通过将XML编码更改为UTF-8来琐碎地修复;或通过手动创建xml.Decoder
并设置CharsetReader
成员。
错误编号2:拆卸时,XML解码器期望A pointer ,因为它需要 modify 在struct中传递:
if err := xml.Unmarshal(bodyXML, &result); err != nil {
....
}
注意结果前面的&
。
修复这些错误时,XML可以很好地删除。
我在Go Playground上创建了一个完全有效的示例