#!/usr/bin/env perl6 use v6; use XML::Parser::Tiny::Grammar; use XML::Parser::Tiny::Actions; class XML::Parser::Tiny; has $!grammar = XML::Parser::Tiny::Grammar; has $!actions = XML::Parser::Tiny::Actions.new; method parse (Str $xml) { if my $m = $!grammar.parse($xml, :$!actions) { return $m.ast; } else { die 'Invalid XML'; } } =begin pod =head1 NAME XML::Parser::Tiny is a module for parsing XML documents. =head1 SYNOPSYS =begin code use XML::Parser::Tiny; my $xml = q{ aaa]]>ddd }; my $parser = XML::Parser::Tiny.new; my $tree = $parser.parse($xml); say $tree.perl; # { # "head" => [ # { # "name" => "xml", # "attr" => { # "version" => "1.0", # "charset" => "UTF-8" # } # } # ], # "body" => { # "name" => "doc", # "attr" => {}, # "data" => [ # "aaa", # { # "name" => "bbb", # "attr" => { # "key" => "<+>", # }, # "data" => [ "" ] # }, # "ddd" # ] # } # } =end code =head1 DESCRIPTION A module for parsing XML documents. =head1 METHODS =head2 parse(Str $xml) Converts XML into structure represented in SYNOPSYS section. This method throws an exception in case of errors. =head1 AUTHOR Alexandr Alexeev, (L) =head1 COPYRIGHT Copyright 2012 Alexandr Alexeev This program is free software; you can redistribute it and/or modify it under the same terms as Rakudo Perl 6 itself. =end pod