哪个Haskell XML库可以使用?

我看到Haskell中有一些XML处理库。

  • HaXml似乎是最受欢迎的(根据Dons )
  • HXT似乎是最先进的(也是最难学的箭矢)
  • XML似乎只是基本的parsing器
  • HXML似乎被放弃了
  • tagsoup和tagchup
  • libXML和libXML SAX绑定

那么,如果我想要,可以select哪个库

  • 相当强大(从XML中提取数据并修改XML)
  • 很可能在未来很长时间内得到支持
  • 成为“社区select”(默认select)

虽然以上大部分似乎足以满足我目前的需求,但select其中一个的原因是什么呢?

UPD 20091222

关于许可的一些说明:

  • BSD或MIT: hexpat , hxt , libxml , tagsoup , xml
  • LGPL: HaXml
  • GPLv2许可:
  • GPLv3: libxml-sax , tagchup , tagsoup-ht

我会build议:

  1. XML ,如果你的任务很简单
  2. haxml ,如果你的任务很复杂
  3. hxt ,如果你喜欢箭头
  4. 如果您需要高性能,请使用hexpat

除了不寻常的箭头语法,HXT的主要问题是性能和内存使用情况。 我有一个应用程序花了1.2秒处理大约1.5MB的XML,在此过程中消耗了大约2.3GB(!)的内存。 Libxml2在相同的数据上花费几毫秒。 通过css函数和箭头谓词提取数据也比Libxml2慢。

我个人推荐HXT, 因为它使用箭头,这是一个非常有用和强大的工具来学习,而XMLparsing库是箭头的完美使用(他们是第一个发明来解决monads不能解决的各种分析问题)。 箭头也开始被用在纯函数式编程之外,比如JavaScript中的Arrowlets 。