Как реализовать счетчик хода выполнения при разборе больших файлов XML в Go / Golang с помощью xml.NewDecoder (xmlFile)? - PullRequest
0 голосов
/ 05 апреля 2019

Я написал некоторый код для анализа больших файлов XML (> 3 ГБ), следуя примеру на этом сайте: 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: Как получить длину файла в Go?

Но какМогу ли я получить фактическую (или относительную) позицию decoder.Token()?

1 Ответ

1 голос
/ 05 апреля 2019

xml.Decoder имеет метод InputOffset, который возвращает текущую позицию.Вам нужно что-то еще?

...