使用哪个Haskell XML库?

63

我看到Haskell中有几个XML处理库。

  • HaXml似乎是最受欢迎的(根据dons
  • HXT似乎是最先进的(但由于箭头而且难以学习)
  • xml似乎只是基本解析器
  • HXML似乎已经被遗弃
  • tagsoup和tagchup
  • libXML和libXML SAX绑定

那么,如果我想要一个:

  • 足够强大(用于从XML中提取数据并修改XML)
  • 未来可能得到长期支持
  • “社区选择”(默认选择)

那么应该选择哪个库?虽然上述大多数库对我目前的需求足够,但选择其中一个库而不是其他库的原因是什么?

更新 20091222:

关于许可证的一些说明:

3个回答

59

我的建议是:

  1. xml,如果您的任务很简单
  2. haxml,如果您的任务很复杂
  3. hxt,如果您喜欢箭头操作
  4. hexpat,如果您需要高性能

注:各个库名已翻译为对应的中文名称。

1
谢谢,唐。这正是我在寻找的建议类型。 - sastanin
4
我肯定会使用Haxml。它已经有10年的历史了,而且作者们非常活跃,很可能在未来很长一段时间内得到支持。 - Don Stewart
好的,这是选择HaXml的一个重要原因。谢谢! - sastanin
5
我从这个网址的教程中受益匪浅:http://www.haskell.org/haskellwiki/HXT/Practical。与我找到的大多数其他教程不同,这个教程从基本的XML文档开始,展示了如何解析它,然后逐渐增加了复杂性。 - Tim Stewart
1
另一个很好的HXT教程,也很好地解释了箭头的概念:http://adit.io/posts/2012-04-14-working_with_HTML_in_haskell.html - Stephan Kulla
1
这还是真的吗?我感觉自己不够聪明,无法使用HXT。 - Carbon

14

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


不知道这是否是问题所在,但是启用优化(-O2)与否在某些情况下可能会产生巨大的差异。 - Julia Path

11

我个人推荐使用HXT,因为它使用箭头,箭头是一种非常有用和强大的学习工具,而XML解析库正是箭头的完美应用(它们最初的发明是为了解决各种单子无法解决的解析问题)。箭头也开始在纯函数式编程之外被使用,例如JavaScript中的Arrowlets


1
谢谢,威尔!这就是我开始学习HXT的原因,但我也担心使用HXT和箭头编写的代码对潜在贡献者不够友好。此外,HaXml更受欢迎也让我感到担忧。 - sastanin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接