我编写了一些代码来解析大型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()
的实际(或相对)位置?
xml.Decoder
有方法InputOffset
,返回当前位置。您还需要些别的吗 ?