Какой синтаксический анализатор XML лучше для Perl? - PullRequest
32 голосов
/ 28 января 2009

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

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

Ответы [ 8 ]

24 голосов
/ 28 января 2009

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

12 голосов
/ 18 июня 2009

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

10 голосов
/ 28 января 2009

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

5 голосов
/ 28 января 2009

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

4 голосов
/ 14 апреля 2013

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

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

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

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

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

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

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

2 голосов
/ 29 января 2009

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

1 голос
/ 07 апреля 2013

Думаю, вам следует попробовать XML :: MyXML . Это очень удобно.

0 голосов
/ 15 января 2018

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

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

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

...