Какую XML-библиотеку Haskell использовать? - PullRequest
60 голосов
/ 01 сентября 2009

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

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

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

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

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

UPD 20091222 :

Некоторые примечания о лицензиях:

Ответы [ 3 ]

57 голосов
/ 02 сентября 2009

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

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

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

10 голосов
/ 01 сентября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...