2009-09-01 29 views
57

Tôi thấy rằng có một vài thư viện xử lý XML trong Haskell.Thư viện XML Haskell nào để sử dụng?

  • HaXml có vẻ là phổ biến nhất (theo dons)
  • HXT dường như là tiên tiến nhất (nhưng cũng là khó khăn nhất để tìm hiểu nhờ vào mũi tên)
  • xml mà có vẻ là chỉ cơ bản phân tích cú pháp
  • HXML dường như bị bỏ rơi
  • TagSoup và tagchup
  • libxml và libxml SAX bindings

Vì vậy, mà thư viện để chọn nếu tôi muốn nó

  • được hợp lý mạnh mẽ (để trích xuất dữ liệu từ XML và sửa đổi XML)
  • khả năng được hỗ trợ thời gian dài trong tương lai
  • là “lựa chọn của cộng đồng” (lựa chọn mặc định)

Và trong khi hầu hết các điều trên dường như đủ cho nhu cầu hiện tại của tôi, lý do là gì chọn một trong số họ trên những người khác?

UPD 20.091.222:

Một số lưu ý về giấy phép:

Trả lời

53

Tôi muốn giới thiệu:

  1. xml, nếu nhiệm vụ của bạn là đơn giản
  2. haxml, nếu nhiệm vụ của bạn là phức tạp
  3. hxt, nếu bạn thích mũi tên
  4. hexpat nếu bạn cần hiệu suất cao
+1

Cảm ơn bạn, Don. Đó là loại gợi ý tôi đang tìm kiếm. – sastanin

+3

"có khả năng được hỗ trợ trong thời gian dài trong tương lai" Tôi chắc chắn sẽ sử dụng Haxml. Đó là 10 tuổi, và các tác giả rất tích cực. –

+0

Vâng, đây là một lý do quan trọng để chọn HaXml. Cảm ơn! – sastanin

10

Cá nhân tôi muốn giới thiệu HXT nó sử dụng mũi tên, mà là một công cụ rất hữu ích và mạnh mẽ để tìm hiểu, và một thư viện phân tích cú pháp XML là việc sử dụng hoàn hảo cho mũi tên (họ lần đầu tiên được phát minh để giải quyết các vấn đề phân tích cú pháp khác nhau mà monads không thể). Các mũi tên cũng bắt đầu được sử dụng bên ngoài lập trình hàm thuần túy, chẳng hạn như Arrowlets in JavaScript.

+1

Cảm ơn, Will! Đó là lý do tại sao tôi bắt đầu học HXT, nhưng tôi cũng sợ rằng mã được viết bằng HXT và các mũi tên ít thân thiện hơn với những người đóng góp tiềm năng. Ngoài ra, nó báo động cho tôi rằng HaXml phổ biến hơn nhiều. – sastanin

12

Vấn đề chính của HXT, ngoài arro bất thường w cú pháp, là hiệu suất và sử dụng bộ nhớ. Tôi có một ứng dụng dành 1,2 giây để xử lý khoảng 1.5MB XML, tiêu tốn khoảng 2.3GB (!) Bộ nhớ trong tiến trình. Libxml2 mất một vài phần nghìn giây trên cùng một dữ liệu. Trích xuất dữ liệu qua các thuộc tính chức năng và mũi tên css cũng có vẻ rất chậm so với Libxml2.

Các vấn đề liên quan