[英]Parsing XML with CDATA using Go
我是Golang的新手,我一直在尝试通过定义结构并使用xml.Unmarshal来解析Go中的xml。没有抛出错误但结构为空。 这是我的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解码器需要一个指针 ,因为它需要修改传入的结构:
if err := xml.Unmarshal(bodyXML, &result); err != nil {
....
}
注意结果前面的&
。
当你修复这些错误时,XML解组很好。
我在Go Playground上创建了一个完整的例子
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.