[英]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.