LINUX.ORG.RU

Чем лучше парсить поток XML данных из сетевых сокетов на Perl?


0

2

Подскажите пожалуйста, при помощи каких инструментов/модулей Perl лучше всего парсить поток XML данных, получаемый из сетевых сокетов для складывания его составляющих в MySQL?

★★

Ответ на: комментарий от bvn13

Поток XML данных реального времени, который поступает из сетевого сокета от сервера в ответ на запросы(команды) клиента. Тоесть приложение клиент-серверное соответсвенно. Эти данные надо парсить(по-возможности на лету) и складывать в соответствии с определенными правилами в базу.

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

Вам дерево данных строить, или на лету обрабатывать? Для первого - XML::LibXML, для второго - XML::Twig.

Мне один хороший человек однажды посоветовал избегать в компьютерах вещей, помеченных «Simple», «Fast» и «Easy», поскольку зачастую умеют они очень мало. Так вот, XML::Simple довольно глуп и для сложных структур не подходит.

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

советую складывать все входящие данные в какой-нибудь временный файл, а потом XML::LibXML скармливать.

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

избегать в компьютерах вещей, помеченных «Simple», «Fast» и «Easy», поскольку зачастую умеют они очень мало

Шindows 7 Ultimate Full Enterprize x64

anonymous
()
Ответ на: комментарий от AITap

Нужно парсить поток данных(желательно на лету) и складывать их по определенным признакам(тегам итд) в таблицы базы, тип(страктура) данных потока реального времени почти не меняется, меняются сами данные, вот надо их складывать в таблицы, держа начальные строки этих таблиц в самом актуальном состоянии, сдвигая наиболее устаревшие данные в конец таблиц, в реальном времени.

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

Можно и так, но желательно «на лету». Хотя попробовать все-таки следует 2 варианта и посмотреть, что подходит больше.

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

XML::Twig как раз подходит для потока данных: http://search.cpan.org/~mirod/XML-Twig-3.42/Twig_pm.slow#Processing_an_XML_do...

Задаёте хэндлеры для полей структуры данных и запускаете $twig->parse($socket). Хэндлеры по очереди выдирают поля и кладут их в базу, после чего освобождают память.

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

Большое спасибо. Надо попробовать.

ChAnton ★★
() автор топика

Если уж речь идет о реал-тайме, то может лучше посмотреть на JSON вместо XML? чтобы распарсить JSON ресурсов требуется меньше

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

Речь идет именно об XML, так как решение о формате данных принимаются за «точкой демаркации» отвественности. Грубо говоря есть сокеты, есть входящий XML, и его необходимо распарсить. Никаких JSON не предполагается и не может предполагаться. Я понимаю что удобнее)))

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