@hackage hexpat0.18
XML parser/formatter based on expat
Installation
Dependencies (9)
- List >=0.4
- base >=3 && <5
- bytestring
- containers
- extensible-exceptions >=0.1 && <0.2
- parallel <3 Show all…
Dependents (31)
@hackage/xeno, @hackage/fei-datasets, @hackage/hxt-expat, @hackage/hexpat-pickle-generic, @hackage/mysnapsession, @hackage/hgeometry, Show all…
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), SAX-style parse (SAX), and access to the low-level interface in case speed is paramount (Internal.IO).
The design goals are speed, speed, speed, interface simplicity and modularity.
For introduction and examples, see the Text.XML.Expat.Tree module. For benchmarks, http://haskell.org/haskellwiki/Hexpat/
If you want to do interactive I/O, an obvious option is to use lazy parsing with one of the lazy I/O functions such as hGetContents. However, this can be 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.
IO is filed under Internal because it's low-level and most users won't want it. The other Internal modules are re-exported by Annotated and Tree, so you won't need to import them directly.
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; 0.16 switch from mtl to transformers; 0.17 fix mapNodeContainer & rename some things.; 0.18 rename defaultEncoding to overrideEncoding.