读取VB.NET XmlTextReader字节

时间:2015-02-12 03:28:47

标签: xml vb.net

我需要解析一个大的(> 3GB)XML文件,并使用XmlTextReader循环遍历这样的元素:

oReader = New XmlTextReader(filename)
oReader.WhitespaceHandling = WhitespaceHandling.Significant

While oReader.Read()
    ' Processing in here
End While

由于预计需要很长时间,因此我想提供一个进度指示器,指示到目前为止已经处理了多少XML文件。我的计划是在处理之前获取XML文件的总文件大小,然后保持XmlTextReader处理了多少字节的运行总和,以便我可以计算完成百分比。但是,我无法弄清楚如何获取XmlTextReader的基础流缓冲的字节数。有没有办法做到这一点?

1 个答案:

答案 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