Какую XML-библиотеку Haskell использовать?
Я вижу, что в Haskell есть несколько библиотек обработки XML.
- HaXml кажется, самый популярный (согласно Донское)
- HXT кажется, самый продвинутый (но и самый трудный для изучения благодаря стрелкам)
- xml который, кажется, просто основной парсер
- HXML кажется отказались.
- tagsoup и tagchup
- libXML и libXML SAX привязки
Итак, какую библиотеку выбрать, если я хочу его
- быть достаточно мощным (извлекать данные из XML и изменять XML)
- скорее всего, будет поддерживаться долгое время в будущем
- быть "выбор сообщества" (выбор по умолчанию)
и хотя большинство из вышеперечисленного кажется достаточным для моих текущих потребностей, какова причина выбрать один из них над другие?
UPD 20091222:
некоторые заметки о лицензии:
- BSD или MIT:hexpat,hxt, libxml,tagsoup,xml
- материалы: HaXml
- GPLv2:
- GPLv3:libxml-sax, tagchup,tagsoup-ht
3 ответа:
основная проблема HXT, помимо необычного синтаксиса Стрелки, является производительность и использование памяти. У меня есть приложение, которое тратит 1,2 секунды на обработку около 1,5 МБ XML, потребляя около 2,3 Гб (!) памяти в процессе работы. Libxml2 занимает несколько миллисекунд на одних и тех же данных. Извлечение данных через
css
предикаты функции и стрелки также кажутся очень медленными по сравнению с Libxml2.
Я бы лично рекомендовал HXT , потому что он использует стрелки, которые являются очень полезным и мощным инструментом для изучения, а библиотека синтаксического анализа XML является идеальным использованием для стрелок (они были впервые изобретены для решения различных проблем синтаксического анализа, которые монады не могли). Стрелки также начинают использоваться за пределами чистого функционального программирования, например стрелки в JavaScript.