LINUX.ORG.RU

libxml2 испортилась


0

0

Раньше libxml2 читала большие текстовые данные кусками по несколько мегабайт и отдавала эти куски один за другим. Соответственно, не жрала память и справлялась с данными любого объёма.

Теперь она работает двумя способами: 1) по умолчанию читает данные до 10Мб, и если они больше, то просто обламывается и не работает; 2) с опцией XML_PARSE_HUGE читает всё, что может прочитать в память и только потом отдаёт данные. После отжирания нескольких гигов памяти затыкается, хз почему, и не работает. В итоге имеем полностью неработающую программу.

Как решать проблему?

Заранее спасибо за помощь.

P.S. Интерфейс xmlreader, так как нужны исключения C++.


>Как решать проблему?

Раньше libxml2...

Самый очевидный вариант «использовать старую версию».

linuxfan ()

угу, открой для себя SAX, который расчитан на большие данные

Dark_SavanT ★★★★★ ()

Вам нужен XML размером больше 10 МБ? Может лучше обратить внимание на иной контейнер?

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

1) SAX работает через call-back-и, вызываемые изнутри libxml2, она сишная, поэтому через неё не проходят плюсовые исключения. xmlreader лучше, ибо отдаёт юзеру цикл пробега по файлу.

2) Этот XML изобрёл заказчик. Также он изобрёл и читалку для него. Но, с ней тоже есть трудности... У заказчика, очевидно, перманентные проблемы с головой, но это не обсуждается.

3) про старую версию я подумал, но проблемы успели рассосаться раньше. :-)

yz ()

XML? Попробуйте использовать YAML или JSON.

Gleb-ax ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.