2009-09-01 12 views
57

Widzę, że w Haskell jest kilka bibliotek przetwarzania XML.Której biblioteki Haskell XML użyć?

  • HaXml wydaje się być najbardziej popularny (według dons)
  • HXT wydaje się być najbardziej zaawansowanym (ale także najbardziej trudne do opanowania dzięki strzałkami)
  • xml który wydaje się być po prostu podstawowym parser
  • HXML wydaje się być opuszczony
  • tagsoup i tagchup
  • libxml i libxml SAX powiązań

Więc, co biblioteka do wyboru, czy chcę to

  • być rozsądnie silny (do wyodrębniania danych z XML i zmodyfikować XML)
  • mogą być obsługiwane długo w przyszłości
  • być „wybór społeczność” (domyślny wybór)

I choć większość z powyższym wydaje się być wystarczające dla moich bieżących potrzeb, co jest powodem do wybrać jeden z nich spośród innych?

UPD 20091222:

Kilka uwag o licencjach

Odpowiedz

53

Polecam:

  1. xml, jeśli zadanie jest proste
  2. haxml, jeśli zadanie jest skomplikowane
  3. hxt, jeśli jak strzały
  4. hexpat Jeśli potrzebujesz wysokiej wydajności
+1

Dziękuję, Don. Tego rodzaju sugestii szukałem. – sastanin

+3

"Prawdopodobnie będzie obsługiwane przez długi czas w przyszłości" Zdecydowanie użyłbym Haxml. Ma 10 lat, a autorzy są bardzo aktywni. –

+0

To jest ważny powód, dla którego warto wybrać HaXml. Dzięki! – sastanin

10

ja osobiście polecam HXT ponieważ używa strzałki, które są bardzo przydatne i skuteczne narzędzie do nauki, a także analizowania biblioteki XML to idealne zastosowanie dla strzałkami (były pierwszy wynalazł rozwiązywać różne problemy z analizowaniem, których monady nie potrafiły). Strzały również zaczynają być używane poza czystym programowaniem funkcjonalnym, takim jak Arrowlets in JavaScript.

+1

Dzięki, Will! Właśnie dlatego zacząłem uczyć się HXT, ale obawiam się również, że kod napisany przy użyciu HXT i strzałek jest mniej przyjazny dla potencjalnych współpracowników. Ponadto, alarmuje mnie, że HaXml jest znacznie bardziej popularny. – sastanin

12

Główny problem HXT, oprócz nietypowego arro w składni, jest wydajność i wykorzystanie pamięci. Mam aplikację, która przez 1,2 sekundy przetwarza około 1.5 MB XML, zużywa około 2,3 GB (!) Pamięci w procesie. Libxml2 zajmuje kilka milisekund na tych samych danych. Wyodrębnianie danych za pomocą funkcji i predykatów strzałek również wydaje się bardzo wolne w porównaniu do Libxml2.

Powiązane problemy