hexpat: wrapper for expat, the fast XML parser

[ bsd3, library, xml ] [ Propose Tags ]

This package provides a general purpose Haskell XML library using Expat to do its parsing (http://expat.sourceforge.net/ - a fast stream-oriented XML parser written in C). It is extensible to any string type, with String, ByteString and Text provided out of the box.

Basic usage: Parsing a tree (Tree), formatting a tree (Format).

Other features: Helpers for processing XML trees (Proc), trees annotated with XML source location (Annotated), XML cursors (Cursor), more intelligent handling of qualified tag names (Qualified), tags qualified with namespaces (Namespaced), SAX-style parse (SAX), and access to the low-level interface in case speed is paramount (IO). And, NodeClass contains type classes for generalized tree processing.

The design goals are speed, speed, speed, interface simplicity and modularity (in that order).

For introduction and examples, see the Text.XML.Expat.Tree module. For benchmarks, http://haskell.org/haskellwiki/Hexpat/

This package provides pure lazy parsing. However, Haskell's lazy I/O is problematic in some applications because it doesn't handle I/O errors properly and can give no guarantee of timely resource cleanup. In these cases, chunked I/O is a better approach: Take a look at the hexpat-iteratee package.

Credits to Iavor Diatchki and the xml (XML.Light) package for Proc and Cursor.

INSTALLATION: Unix install requires an OS package called something like libexpat-dev. On MacOSX, expat comes with Apple's optional X11 package, or you can install it from source. To install on Windows, first install the Windows binary that's available from http://expat.sourceforge.net/, then type (assuming you're using v2.0.1):

cabal install hexpat --extra-lib-dirs="C:\Program Files\Expat 2.0.1\Bin" --extra-include-dirs="C:\Program Files\Expat 2.0.1\Source\Lib"

Ensure libexpat.dll can be found in your system PATH (or copy it into your executable's directory).

ChangeLog: 0.15 changes intended to fix a (rare) "error: a C finalizer called back into Haskell." that seemed only to happen only on ghc6.12.X; 0.15.1 Fix broken Annotated parse.

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.15.1, 0.16, 0.17, 0.18, 0.18.1, 0.18.2, 0.18.3, 0.19, 0.19.1, 0.19.2, 0.19.3, 0.19.4, 0.19.5, 0.19.6, 0.19.7, 0.19.8, 0.19.9, 0.19.10, 0.20.1, 0.20.2, 0.20.3, 0.20.4, 0.20.5, 0.20.6, 0.20.7, 0.20.8, 0.20.9, 0.20.10, 0.20.11, 0.20.12, 0.20.13
Dependencies base (>=3 && <5), bytestring, containers, extensible-exceptions (>=0.1 && <0.2), List (>=0.2), mtl, parallel (<3), text (>=0.5), utf8-string (>=0.3.3) [details]
License BSD-3-Clause
Copyright (c) 2009 Doug Beardsley <mightybyte@gmail.com>, (c) 2009-2010 Stephen Blackheath <http://blacksapphire.com/antispam/>, (c) 2009 Gregory Collins, (c) 2008 Evan Martin <martine@danga.com>, (c) 2009 Matthew Pocock <matthew.pocock@ncl.ac.uk>, (c) 2007-2009 Galois Inc.
Author Stephen Blackheath [blackh] (the primary author), Doug Beardsley, Gregory Collins, Evan Martin (who started the project), Matthew Pocock [drdozer]
Maintainer http://blacksapphire.com/antispam/
Revised Revision 1 made by Bodigrim at 2022-04-17T18:23:03Z
Category XML
Home page http://haskell.org/haskellwiki/Hexpat/
Source repo head: darcs get http://code.haskell.org/hexpat/
Uploaded by StephenBlackheath at 2010-05-08T12:59:45Z
Distributions FreeBSD:0.20.9, LTSHaskell:0.20.13, NixOS:0.20.13, Stackage:0.20.13
Reverse Dependencies 27 direct, 258 indirect [details]
Downloads 60772 total (113 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]