登录
首页 >  Golang >  Go问答

如何在 Go 中解组 XML 文件时获得更详细的错误信息?

来源:stackoverflow

时间:2024-03-08 22:15:25 365浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《如何在 Go 中解组 XML 文件时获得更详细的错误信息?》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我对 golang 还很陌生,但上手很快。我正在开发一个涉及解析 xml 中表示的模式的工具。直观上,我一直在使用标准库中的 go 的 xml.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 库显示有关无法解组文件的更多详细信息?如果没有,第三方替代方案是什么?


正确答案


从我使用 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 解析器的积极开发很少......

好了,本文到此结束,带大家了解了《如何在 Go 中解组 XML 文件时获得更详细的错误信息?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>