我需要解析一个大的(> 3GB)XML文件,并使用XmlTextReader循环遍历这样的元素:
oReader = New XmlTextReader(filename)
oReader.WhitespaceHandling = WhitespaceHandling.Significant
While oReader.Read()
' Processing in here
End While
由于预计需要很长时间,因此我想提供一个进度指示器,指示到目前为止已经处理了多少XML文件。我的计划是在处理之前获取XML文件的总文件大小,然后保持XmlTextReader处理了多少字节的运行总和,以便我可以计算完成百分比。但是,我无法弄清楚如何获取XmlTextReader的基础流缓冲的字节数。有没有办法做到这一点?
答案 0 :(得分:0)
使用Filestream作为XMLTextReader的输入,这样您就可以从该流中获取当前位置。
Using _xmlfile As New IO.FileStream("x:\DocumentFormat.OpenXml.xml", IO.FileMode.Open)
Using oReader As New XmlTextReader(_xmlfile)
oReader.WhitespaceHandling = WhitespaceHandling.Significant
While oReader.Read()
' Current filepos via: _xmlfile.Position
' Processing in here
End While
End Using
End Using