Эффективный парсер для больших XML-файлов

У меня есть очень большие файлы XML для обработки. Я хочу преобразовать их в читаемые PDF-файлы с цветами, рамками, изображениями, таблицами и шрифтами. У меня не так много ресурсов на моей машине, поэтому мне нужно, чтобы мое приложение оптимально обращалось к памяти и процессору.

Я провел скромное исследование, чтобы понять, какую технологию использовать, но не смог решить, какой язык программирования и API лучше всего подходят для моих требований. Я считаю, что DOM не вариант, потому что он потребляет много памяти, но будет ли Java с парсером SAX соответствовать моим требованиям?

Некоторые люди также рекомендовали Python для разбора XML. Это так хорошо?

Я был бы признателен за ваш добрый совет.


person mowienay    schedule 10.06.2013    source источник
comment
Python имеет очень простую и мощную библиотеку BeautifulSoup, которая отлично подходит для анализа XML.   -  person karthikr    schedule 10.06.2013
comment
Картикр большое спасибо. Является ли BeautifulSoup щадящим для памяти и быстрым?   -  person mowienay    schedule 10.06.2013
comment
Пожалуйста, оцените очень большой. Стал бы инженер обращаться за помощью в строительстве моста через очень широкую реку? Кто-нибудь посмеет предложить предложения, не зная, насколько широка река на самом деле? Я слышал, что люди называют 1 МБ очень большим. Решение для 1Mb сильно отличается от 1Gb. Как правило, я был бы удивлен, если бы документ, предназначенный для потребления человеком, был бы слишком большим, чтобы поместиться в памяти в наши дни, если бы не было много изображений.   -  person Michael Kay    schedule 10.06.2013
comment
Спасибо Михаил!! .. Я хочу обрабатывать около 200 тыс. XML-файлов, каждый файл занимает около 2 МБ. Я учту ваш совет позже.   -  person mowienay    schedule 10.06.2013
comment
Вы просматривали vtd-xml (vtd-xml.sf.net)   -  person vtd-xml-author    schedule 18.07.2013


Ответы (4)


SAX очень хороший парсер, но он устарел.

Недавно Oracle запустила новый Parser для эффективного анализа XML-файлов под названием Stax.

*http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.6/tutorial/doc/SJSXP2.html*

Прикрепленная ссылка также показывает сравнение всех парсеров, а также использование памяти и ее функции.

Спасибо, Паван

person Pavan    schedule 11.06.2013

Да, я думаю, Сакс вам подойдет. Dom не подходит для больших XML-файлов, поскольку он хранит весь XML-файл в памяти. Вы можете увидеть сравнение, которое я написал в своем блоге здесь

person Sanjaya Liyanage    schedule 10.06.2013

Не уверен, что вы заинтересованы в использовании Perl, но если вы открыты для этого, ниже приведены все хорошие варианты: LibXML, LibXSLT и XML-Twig, что хорошо для файлов, слишком больших для помещается в памяти (так же, как и LibXML::Reader ). Конечно, так как SAX есть, но это может быть медленно . Большинство людей рекомендуют первые два варианта. Наконец, CPAN — замечательный источник с очень активным сообществом.

person Steve P.    schedule 10.06.2013

Если вы хотите получить лучшее от DOM без накладных расходов на память, vtd-xml — это лучшая ставка, вот доказательство...

http://recipp.ipp.pt/bitstream/10400.22/1847/1/ART_BrunoOliveira_2013.pdf

person vtd-xml-author    schedule 13.01.2016