Какую XML-библиотеку Haskell использовать?


Я вижу, что в Haskell есть несколько библиотек обработки XML.

  • HaXml кажется, самый популярный (согласно Донское)
  • HXT кажется, самый продвинутый (но и самый трудный для изучения благодаря стрелкам)
  • xml который, кажется, просто основной парсер
  • HXML кажется отказались.
  • tagsoup и tagchup
  • libXML и libXML SAX привязки

Итак, какую библиотеку выбрать, если я хочу его

  • быть достаточно мощным (извлекать данные из XML и изменять XML)
  • скорее всего, будет поддерживаться долгое время в будущем
  • быть "выбор сообщества" (выбор по умолчанию)

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

UPD 20091222:

некоторые заметки о лицензии:

3 60

3 ответа:

Я бы порекомендовал:

  1. xml, если ваша задача проста
  2. haxml, если ваша задача сложная
  3. hxt, если вы любите стрелки
  4. hexpat если вам нужна высокая производительность

основная проблема HXT, помимо необычного синтаксиса Стрелки, является производительность и использование памяти. У меня есть приложение, которое тратит 1,2 секунды на обработку около 1,5 МБ XML, потребляя около 2,3 Гб (!) памяти в процессе работы. Libxml2 занимает несколько миллисекунд на одних и тех же данных. Извлечение данных через css предикаты функции и стрелки также кажутся очень медленными по сравнению с Libxml2.

Я бы лично рекомендовал HXT , потому что он использует стрелки, которые являются очень полезным и мощным инструментом для изучения, а библиотека синтаксического анализа XML является идеальным использованием для стрелок (они были впервые изобретены для решения различных проблем синтаксического анализа, которые монады не могли). Стрелки также начинают использоваться за пределами чистого функционального программирования, например стрелки в JavaScript.