使用 xml.NewDecoder(xmlFile) 解析 Go/Golang 中的大型 XML 文件时如何实现进度计数器?
How to implement progress counter when parsing large XML files in Go/Golang with xml.NewDecoder(xmlFile)?
我按照本网站上的示例编写了一些代码来解析大型 XML 文件 (>3GB):https://blog.singleton.io/posts/2012-06-19-parsing-huge-xml-files-with-go/
想法是创建 decoder := xml.NewDecoder(xmlFile)
,然后用 decoder.Token()
遍历文件,同时检查所有 xml.StartElement
。只要找到正确的元素,就会使用 decoder.DecodeElement()
.
对其进行解码
一切都很好。
我现在喜欢的是一种向用户显示进度的方法。类似于 "x percent of file processed".
我知道如何获取 XML 的文件大小:How to get file length in Go?
但是我怎样才能得到decoder.Token()
的实际(或相对)位置呢?
xml.Decoder
有方法 InputOffset
,即 return 当前位置。您还需要其他东西吗?
我按照本网站上的示例编写了一些代码来解析大型 XML 文件 (>3GB):https://blog.singleton.io/posts/2012-06-19-parsing-huge-xml-files-with-go/
想法是创建 decoder := xml.NewDecoder(xmlFile)
,然后用 decoder.Token()
遍历文件,同时检查所有 xml.StartElement
。只要找到正确的元素,就会使用 decoder.DecodeElement()
.
一切都很好。
我现在喜欢的是一种向用户显示进度的方法。类似于 "x percent of file processed".
我知道如何获取 XML 的文件大小:How to get file length in Go?
但是我怎样才能得到decoder.Token()
的实际(或相对)位置呢?
xml.Decoder
有方法 InputOffset
,即 return 当前位置。您还需要其他东西吗?