Как получить правильные данные в большом XML-файле? - PullRequest
0 голосов
/ 09 декабря 2011

У меня есть большой xml-файл (содержит около несколько миллионов записей ), и мне нужно получить около 100 записей (на основе id или что-то вродечто)

Я пробовал TinyXml и Xalan-C , но оба они используют DOM, поэтому это вызывает проблему out of memory.

Существует ли библиотека C / C ++, которая может сделать это без загрузки всех данных в память как DOM?

Ответы [ 3 ]

2 голосов
/ 09 декабря 2011

Как насчет Apache Xerces?Он чертовски зрелый и оптимизирован для производительности (то есть он не будет читать ваши полные файлы в память!).

1 голос
/ 09 декабря 2011

Вам нужен SAX парсер типа Xerces

0 голосов
/ 09 декабря 2011

Процессор Saxon-EE XSLT может обрабатывать подмножество XSLT в потоковом режиме (то есть без построения дерева в памяти). Подробнее см.

http://www.saxonica.com/documentation/sourcedocs/streaming.xml

Это не C / C ++, но вы не говорите, является ли это жестким ограничением.

...