我需要将以下xml转换为struct。
https://play.golang.org/p/tboi-mp06k
var data = `<Message xmlns="http://www.ncpdp.org/schema/SCRIPT"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
release="006"
version="010">`
type Message struct {
XMLName xml.Name `xml:http://www.ncpdp.org/schema/SCRIPT "Message"`
release string `xml:"release,attr"`
version string `xml:"version,attr"`
}
func main() {
msg := Message{}
_ = xml.Unmarshal([]byte(data), &msg)
fmt.Printf("%#v\n", msg)
}
程序输出以下内容: main.Message {XMLName:xml.Name {Space:“http://www.ncpdp.org/schema/SCRIPT”,Local:“Message”},release:“”,version:“”} 发布和版本都是空的。有什么建议吗?
答案 0 :(得分:0)
将结构更改为:
type Message struct {
XMLName xml.Name `xml:http://www.ncpdp.org/schema/SCRIPT "Message"`
Release string `xml:"release,attr"`
Version string `xml:"version,attr"`
}
将解决问题。
Go用例来确定特定标识符在包的上下文中是公共标识符还是私有标识符。在您的代码中,xml.Unmarshal
不会显示这些字段,因为它不是包含代码的包的一部分。
当您将字段更改为大写字母时,它们变为公共字段,因此可以导出。