Какой синтаксический анализатор XML лучше для Perl?

Я пробовал многие из Perl XML парсеров. Я был очень заинтересован в Саблотрон Парсер, но это такая боль, чтобы установить на коробке Windows. В настоящее время я начал использовать XML:: LibXML и XML::LibXSLT, которые, кажется, делают все, что мне нужно.

Они кажутся вполне стандартными. Есть ли лучшие XML-парсеры для использования, чем этот?

8 ответов

Решение

Я думаю, что вы используете довольно хороший. XML:: LibXML, Perl-интерфейс Мэтта Сержанта и Кристиана Глана к libxml2 Даниэля Веллиарда - один из самых быстрых анализаторов XML, который я знаю.

Это действительно зависит от ваших потребностей, как говорили люди. Для анализа XML-файлов размером ~100 МБ (генные аннотации из TAIR, 1 файл на хромосому) я использовал модуль mirod XML::Twig, который позволяет устанавливать обратные вызовы для анализа интересующих вас элементов, представляя каждый поддокумент как XML:: Простое дерево. Он сочетает в себе преимущества парсера SAX (сканирование файла в виде потока) с парсером DOM (проще работать с интересными фрагментами).

Если вам нужна скорость, мощность или возможности, XML::LibXML - это то, что вам нужно. Если вам не все так просто, XML:: Simple - жизнеспособная альтернатива.

(На самом деле это не ответ, а комментарий - однако я не могу комментировать...)

XML:: Simple был упомянут здесь.
(Я знаю, что это несколько лет назад, но это появилось в Google сегодня...)

Однако его сайт ( http://metacpan.org/pod/XML::Simple) теперь говорит:

СОСТОЯНИЕ ЭТОГО МОДУЛЯ

Использование этого модуля в новом коде не рекомендуется. Доступны другие модули, которые обеспечивают более простые и согласованные интерфейсы. В частности, настоятельно рекомендуется XML::LibXML.

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

Патчи с исправлениями ошибок и исправлениями документации приветствуются, но новые функции вряд ли будут добавлены.

По моему опыту XML::Simple лучше всего подходит для быстрого и грязного анализа XML. Мы используем его для анализа данных третьих сторон, которые не всегда соответствуют стандарту XML. XML::Simple генерирует информативные ошибки и очень быстро запускает работу.

Вы также можете посмотреть на XML::Liberal, который использует LibXML внизу.

Я думаю, что вы также должны попробовать XML::MyXML. Это очень просто в использовании.

Я предложу тот, который НЕ ДОЛЖЕН использоваться: XML:: Parser.

Он автоматически расширяет HTML-сущности до их эквивалентов UTF-8, и возможность отключить это поведение не работает для большинства характеристик всех сущностей, &,

Кроме того, его XMLDecl-парсер будет интерпретировать и отображать standalone атрибут в <?xml ... ?> блок как "standalone"="1", что абсолютно неверно - так и должно быть "standalone"="yes",

Другие вопросы по тегам