Golang——解析GBK编码XML文件

Golang——解析GBK编码XML文件

对于golang的xml解析,大家应该很熟悉了,或者说golang的xml解析其实很简单。语言本身支持xml解析,通过实例即可快速理解。但是在实际开发中总会遇到各种问题,比如xml的encoding是GBK的,导致解析失败!!原因是Golang 默认不支持 UTF-8 以外的字符集 。

解决方法

使用golang.org/x/net/html/charset库

步骤1、安装golang.org/x/net/html/charset

如果你已经翻墙?直接

go get golang.org/x/net/html/charset

如果没有?则进行步骤:

1. 在你的GOPATH下新建目录:golang.org/x
2. 进入到x目录下,在该目录打开cmd执行命令:git clone https://github.com/golang/net.git

步骤2、编码转换

func init() {
    type resRoot struct {
        XMLName    xml.Name `xml:"resRoot"`
        GuoduCount string   `xml:"rcode"`
    }

    data := `
     <?xml version="1.0" encoding="GBK"?>
        <resRoot>
            <rcode>59529</rcode>
        </resRoot>
    `
    decoder := xml.NewDecoder(bytes.NewReader([]byte(data)))
    decoder.CharsetReader = func(c string, i io.Reader) (io.Reader, error) {
        return charset.NewReaderLabel(c, i)
    }
    result := &resRoot{}
    decoder.Decode(result)
    fmt.Println(result)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值