README.md

# Saxy

An native, fast Elixir XML SAX parser

## Installation

```elixir
def deps do
  [
    {:saxy, "~> 0.1.0"}
  ]
end
```

## Usage

First define your SAX event handler

```elixir
defmodule MyEventHandler do
  @behaviour Saxy.EventHandler

  def start_document(state) do
    IO.puts "Start parsing document"
    state
  end

  def start_element({name, attribute}, state) do
    IO.puts "Start #{name} element"
    state
  end

  def characters(string, state) do
    IO.puts "Characters #{string}"
    state
  end

  def end_element({name}, state) do
    IO.puts "End #{name} element"
    state
  end

  def end_document(state) do
    IO.puts "Finish parsing document"
    state
  end
end
```

Then go parsing!

```
xml = """
<?xml version="1.0" ?>
<foo><bar>Hello World!</bar></foo>
"""

init_state = 0

Saxy.parse(xml, init_state, MyEventHandler)

#=> Start parsing document
#=> Start foo element
#=> Start bar element
#=> Characters "Hello World!"
#=> End bar element
#=> End foo element
#=> Finish parsing document
```