hexpat-0.3: wrapper for expat, the fast XML parser




This module wraps the Expat API directly with IO operations everywhere. Basic usage is:

  1. Make a new parser: newParser.
  2. Set up callbacks on the parser: setStartElementHandler, etc.
  3. Feed data into the parser: parse or parseChunk.


Parser Setup

newParser :: Maybe Encoding -> IO ParserSource

Create a Parser. The encoding parameter, if provided, overrides the document's encoding declaration.


parse :: Parser -> ByteString -> IO BoolSource

parse data feeds lazy bytestring data into a parser and returns True if there was no parse error.

data Encoding Source

Encoding types available for the document encoding.



Parser Callbacks

type StartElementHandler = String -> [(String, String)] -> IO ()Source

The type of the "element started" callback. The first parameter is the element name; the second are the (attribute, value) pairs.

type EndElementHandler = String -> IO ()Source

The type of the "element ended" callback. The parameter is the element name.

type CharacterDataHandler = String -> IO ()Source

The type of the "character data" callback. The parameter is the character data processed. This callback may be called more than once while processing a single conceptual block of text.

setStartElementHandler :: Parser -> StartElementHandler -> IO ()Source

Attach a StartElementHandler to a Parser.

setEndElementHandler :: Parser -> EndElementHandler -> IO ()Source

Attach an EndElementHandler to a Parser.

setCharacterDataHandler :: Parser -> CharacterDataHandler -> IO ()Source

Attach an CharacterDataHandler to a Parser.

Lower-level Parsing Interface

parseChunk :: Parser -> ByteString -> Bool -> IO BoolSource

parseChunk data False feeds strict ByteString data into a Parser. The end of the data is indicated by passing True for the final parameter. parse returns False on a parse error.