在使用xml.NewDecoder(xmlFile)解析Go / Golang中的大型XML文件时如何实现进度计数器?

问题描述 投票:0回答:1

我编写了一些代码来解析大型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%”之类的东西。

我知道如何获取XML的文件大小:How to get file length in Go?

但是我怎样才能获得decoder.Token()的实际(或相对)位置?

go xml-parsing tokenize large-files
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.