簡體   English   中英

使用Go解析使用CDATA的XML

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM