在对 XML 文件进行 Go 解组时如何获得更多错误详细信息?
How to get more error detailing when doing Go's unmarshalling for XML files?
我是 Golang 的新手,但上手很快。我正在开发一种工具,涉及解析 XML 中表示的模式。直觉上,我一直在使用标准库中的 Go 的 xml.Unmarshal
以避免必须编写自己的解析器。
但是,当 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 方的替代方案是什么?
根据我在使用 go 和 xml 时所见,没有办法从 xml.Unmarshal() 方法 returns 的任何错误中获取更多调试信息.
我不确定您看到了什么错误,但请记住,go 库是为支持 XML 版本 1.0 而构建的。还有:https://pkg.go.dev/encoding/xml#pkg-note-BUG
不幸的是,与 json 支持相比,go 对 xml 解析的支持不是很好。如果可能的话,我建议尝试将您的输入数据格式化为 json 之类的格式,以避免很多麻烦。还缺少 third-party 包对 xml 解析的支持。
我看到了 https://github.com/beevik/etree 之类的东西,您可能会感兴趣。尽管 XML Go 解析器的开发很少...
我是 Golang 的新手,但上手很快。我正在开发一种工具,涉及解析 XML 中表示的模式。直觉上,我一直在使用标准库中的 Go 的 xml.Unmarshal
以避免必须编写自己的解析器。
但是,当 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 方的替代方案是什么?
根据我在使用 go 和 xml 时所见,没有办法从 xml.Unmarshal() 方法 returns 的任何错误中获取更多调试信息.
我不确定您看到了什么错误,但请记住,go 库是为支持 XML 版本 1.0 而构建的。还有:https://pkg.go.dev/encoding/xml#pkg-note-BUG
不幸的是,与 json 支持相比,go 对 xml 解析的支持不是很好。如果可能的话,我建议尝试将您的输入数据格式化为 json 之类的格式,以避免很多麻烦。还缺少 third-party 包对 xml 解析的支持。
我看到了 https://github.com/beevik/etree 之类的东西,您可能会感兴趣。尽管 XML Go 解析器的开发很少...