繁体   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