哪个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议:
- XML ,如果你的任务很简单
- haxml ,如果你的任务很复杂
- hxt ,如果你喜欢箭头
- 如果您需要高性能,请使用hexpat
除了不寻常的箭头语法,HXT的主要问题是性能和内存使用情况。 我有一个应用程序花了1.2秒处理大约1.5MB的XML,在此过程中消耗了大约2.3GB(!)的内存。 Libxml2在相同的数据上花费几毫秒。 通过css
函数和箭头谓词提取数据也比Libxml2慢。
我个人推荐HXT, 因为它使用箭头,这是一个非常有用和强大的工具来学习,而XMLparsing库是箭头的完美使用(他们是第一个发明来解决monads不能解决的各种分析问题)。 箭头也开始被用在纯函数式编程之外,比如JavaScript中的Arrowlets 。