2015-02-12 4 views
0

Мне нужно разобрать большой (> 3GB) файл XML и использую XmlTextReader перебрать элементы, как так:VB.NET XmlTextReader байт прочитать

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

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

Поскольку ожидается, что это займет много времени, Я хотел бы предоставить индикатор прогресса, сколько из XML-файла было обработано до сих пор. Мой план состоял в том, чтобы получить общий размер файла XML перед обработкой, а затем сохранить текущую сумму количества байтов, обработанных XmlTextReader, чтобы я мог рассчитать процент завершения. Но я не могу понять, как получить количество байтов, которые буферизует базовый поток XmlTextReader. Есть ли способ сделать это?

ответ

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 
Смежные вопросы