NAME
    XML::Saxtract - Streaming parse XML data into a result hash based upon
    a specification hash
VERSION
    version 1.02
SYNOPSIS
        use XML::Saxtract qw(saxtract_string saxtract_uri);
    
        my $xml = "";
        my $spec = { '/root/@id' => rootId };
    
        my $result = saxtract_string( $xml, $spec );
        my $rootId = $result->{rootId};
    
        my $complex_xml = <<'XML';
        
          Lucas
          Ali
          Boo
          Dude
        
        XML
    
        # get a map of all the employees
        my $complex_spec = {
            'http://def' => 'k',
            '/root/k:employee' => {
                name => 'employees',
                type => 'map',
                key => 'name',
                spec => {
                    '' => sub {
                        my ($object, $value) = @_;
                        $object->{name} => $value;
                        $object->{email} => lc($value) . '@example.com';
                    },
                    '/@id' => 'id'
                }
            }
        };
        my $result = saxtract_string( $complex_xml, $complex_spec );
        foreach my $employee ( keys( %{$result->{employees}} ) ) {
            print( "$employee->{id}: $employee->{name} <$employee->{email}>\n" );
        }
        # Prints:
        # 2: Ali 
        # 4: Dude 
DESCRIPTION
    This module provides methods for SAX based (streaming) parsing of XML
    data into a result hash based upon a specification hash.
EXPORT_OK
 saxtract_string( $xml_string, $specification, [%options] )
    Parses the xml_string according to the specification optionally setting
    values in the result object. If the result object is not specified, a
    new empty hash is created and a reference to it is returned.
    xml_string
      A string containing the xml to be parsed.
    specification
      A Saxtract specification hash.
    options
      object
	A reference to a hash to load with the results of the parsing.
 saxtract_url( $url, $specification, [%options] )
    Parses the xml_string according to the specification optionally setting
    values in the result object. If the result object is not specified, a
    new empty hash is created and a reference to it is returned.
    url
      A URL used to locate the XML content. LWP::UserAgent will be used to
      retrieve the content from this URL.
    specification
      A Saxtract specification hash.
    options
      object
	A reference to a hash to load with the results of the parsing.
      agent
	If specified, this agent will be used to request the XML, if not, a
	new LWP::UserAgent will be used.
      die_on_failure
	If true, the request will die on any http response other than 200.
	$@ will be set to the HTTP::Response object returned by the
	request.
AUTHOR
    Lucas Theisen 
COPYRIGHT AND LICENSE
    This software is copyright (c) 2013 by Lucas Theisen.
    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.