libxml выделяет слишком много памяти на iphone - PullRequest
1 голос
/ 27 октября 2010

У меня проблема с парсером libxml на iPhone! Я использую PerformXMLXPathQuery для анализа XML-файла с около 100 000 строк. Приложение разрывается при запуске PerformXMLPathQuery, потому что ему не хватает памяти. Что я могу сделать здесь?

Спасибо

Markus

Ответы [ 2 ]

3 голосов
/ 27 октября 2010

Возможно, вы захотите взглянуть на xmlTextReader «потокового» интерфейса libxml2 .

Это движущийся вперед курсор, который отбрасывает входные данные, которые он уже обработал, и не создает большой, интенсивно использующий память DOM при движении вперед.Запросы XPath по-прежнему могут использоваться с ограничением, что поддеревья должны быть расширены (то есть скопированы в структуры libxml в памяти) для частей документа, которые должны быть найдены.

Интерфейс xmlTextReader намного более утомителенчем просто выбросить несколько запросов XPath в корневой элемент, но для документа такого размера на устройстве с ограниченным объемом памяти это может быть лучшим выбором.

Я только что закончил преобразование в xmlTextReader для аналогичногопричин, и память, используемая во время обработки XML, идентична для документов размером 20 КБ и 30 МБ.

1 голос
/ 27 октября 2010

Вы можете попытаться использовать NSXMLParser, чтобы получить только те данные, которые вы хотите сохранить, используя память

...