2009-09-01 19 views
57

Je vois qu'il y a quelques bibliothèques de traitement XML dans Haskell.Quelle bibliothèque Haskell XML utiliser?

  • HaXml semble être le plus populaire (selon dons)
  • HXT semble être le plus avancé (mais aussi les plus difficiles à apprendre grâce à des flèches)
  • xml qui semble être juste la analyseur de base
  • HXML semble être abandonné
  • tagsoup et tagchup
  • liaisons libxml et libxml SAX

Alors, quelle bibliothèque de choisir si je veux

  • être raisonnablement puissant (pour extraire des données de XML et de modifier XML)
  • susceptibles d'être soutenues depuis longtemps dans l'avenir
  • d'être un « choix communautaire » (choix par défaut)

Et alors que la plupart de ce qui précède semble être suffisant pour mes besoins actuels, ce sont les raisons de en choisir un par-dessus les autres?

UPD 20091222:

Quelques remarques sur les licences:

Répondre

53

Je recommande:

  1. xml, si votre tâche est simple
  2. haxml, si votre tâche est complexe
  3. hxt, si vous aimez les flèches
  4. hexpat si vous avez besoin de haute performance
+1

Merci, Don. C'est le genre de suggestion que je cherchais. – sastanin

+3

"susceptible d'être soutenu longtemps dans le futur" Je voudrais certainement utiliser Haxml. Il a 10 ans et les auteurs sont très actifs. –

+0

Eh bien, c'est une raison importante de choisir HaXml. Merci! – sastanin

10

Je recommande personnellement HXT parce il utilise des flèches, qui sont un outil très utile et puissant pour apprendre, et une bibliothèque d'analyse XML est l'utilisation parfaite pour les flèches (ils ont d'abord été inventé pour résoudre divers problèmes d'analyse que les monades ne pouvaient pas). Les flèches commencent également à être utilisées en dehors de la programmation fonctionnelle pure, telle que Arrowlets in JavaScript.

+1

Merci, Will! C'est pourquoi j'ai commencé à apprendre HXT, mais j'ai aussi peur que le code écrit avec HXT et les flèches soit moins amical pour les contributeurs potentiels. En outre, cela m'alarme que HaXml est beaucoup plus populaire. – sastanin

12

Le problème principal de HXT, en dehors de l'arro inhabituel w syntaxe, est la performance et l'utilisation de la mémoire. J'ai une application qui passe 1,2 secondes de traitement environ 1.5 Mo de XML, consommant environ 2,3 Go (!) De mémoire dans le processus. Libxml2 prend quelques millisecondes sur les mêmes données. L'extraction de données via la fonction css et les prédicats de flèche semble également très lente par rapport à Libxml2.