go - 使用 xml.NewDecoder(xmlFile) 在 Go/Golang 中解析大型 XML 文件时如何实现进度计数器?
问题描述
我按照本网站上的示例编写了一些代码来解析大型 XML 文件(>3GB):https ://blog.singleton.io/posts/2012-06-19-parsing-huge-xml-files-with-去/
这个想法是创建decoder := xml.NewDecoder(xmlFile)
,然后迭代文件,decoder.Token()
同时检查所有xml.StartElement
。每当找到正确的元素时,它就会被解码为decoder.DecodeElement()
.
这一切都很好。
我现在喜欢的是一种向用户显示进度的方法。类似于“处理的文件的百分比”。
我知道如何获取 XML 的文件大小:如何在 Go 中获取文件长度?
但是我怎样才能得到 的实际(或相对)位置decoder.Token()
?
解决方案
xml.Decoder
有方法InputOffset
,返回当前位置。您还需要些别的吗 ?
推荐阅读
- c# - 有没有办法在 C# UWP 中单击坐标?
- python - 如何在 python 中使用 Excel 文件生成结果?
- ms-access - 从组合框和列表框选择填充 Access 2016 中的文本框
- c - 由信号 SIGKILL 终止(强制退出)不同的错误
- java - 如何将 .mp4 文件保存到手机的外部存储中?安卓工作室
- android - 如何使用 Kotlin 在他们的设备上保存用户输入?
- laravel - 通过 hasOneThrough 关系更新记录
- javascript - react-router-dom(ReactJS) 嵌套组件
- javascript - 在图像上使用 model.predict
- swiftui - SwiftUI VStack 将子项对齐到顶部