首页 > 解决方案 > 使用 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()

标签: goxml-parsingtokenizelarge-files

解决方案


xml.Decoder有方法InputOffset,返回当前位置。您还需要些别的吗 ?


推荐阅读