为了账号安全,请及时绑定邮箱和手机立即绑定

在对 XML 文件进行 Go 解组时如何获得更多错误详细信息?

在对 XML 文件进行 Go 解组时如何获得更多错误详细信息?

Go
侃侃无极 2022-11-28 14:49:35
我是 Golang 的新手,但上手很快。我正在开发一个涉及解析以 XML 表示的模式的工具。直觉上,我一直在使用xml.Unmarshal标准库中的 Go 来避免编写自己的解析器。但是,当 unmarshal 函数失败时,我注意到它并没有真正详细说明失败的位置或行。如果 XML 模式有数百行,这将非常麻烦。下面的代码是我如何从文件中读取 XML,它似乎是在 Go 中读取 XML 文件的一种非常标准的方法。    xmlFile, err := os.Open(file)    if err != nil {        fmt.Println("Error attempting to open file: ", err)        return    }    defer xmlFile.Close()    var schema xmlschema.TFP    // Read in the bytes    byteValue, err := ioutil.ReadAll(xmlFile)    if err != nil {        fmt.Println(err)        return    }    // Read in the data into the structure    err = xml.Unmarshal(byteValue, &schema)    if err != nil {        fmt.Println(err)        return    }当然,考虑到我是 Go 的新手,也许这不是读取 XML 文件的最佳方式。有没有办法让 Go 的xml/encoding库显示更多关于为什么它无法解组文件的详细信息?如果不是,那么第 3 方的替代方案是什么?
查看完整描述

1 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

从我所看到的使用 go 和 xml 的情况来看,没有办法从 xml.Unmarshal() 方法返回的任何错误中获取更多调试信息。

我不确定您看到的是什么错误,但请记住,go 库是为仅支持 XML 1.0 版而构建的。另外:https ://pkg.go.dev/encoding/xml#pkg-note-BUG

不幸的是,与 json 支持相比,go 对 xml 解析的支持并不是很好。如果可能的话,我建议尝试将您的输入数据格式化为 json 之类的格式,以避免很多麻烦。也缺乏对xml解析的第三方包支持。

我看过像https://github.com/beevik/etree这样的东西,你可能会感兴趣。尽管 Go 的 XML 解析器很少有积极的开发......


查看完整回答
反对 回复 2022-11-28
  • 1 回答
  • 0 关注
  • 55 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信