NAME
ETR::XML::SAX::FilterHandler - A handler to filter large XML files or streams
VERSION
Version 0.02
SYNOPSIS
my
$hnd
= ETR::XML::SAX::FilterHandler->new({
root
=> books,
record
=> {
entry
=> 1,
other_entry
=> 1
},
find_data
=> {
"Title 1"
=> 1,
"Title 3"
=> 1,
Oth
=> 1
}
});
my
$str
=
<<EOS;
<books>
<entry>
<title>Title 1</title>
</entry>
<other_entry>
<title>Other title</title>
</other_entry>
<entry>
<title>Title 2</title>
</entry>
<entry>
<title>Title 3</title>
</entry>
</books>
EOS
my
$factory
= XML::SAX::ParserFactory->parser(
Handler
=>
$hnd
);
# XML source:
# from string:
"\nfrom string:\n======\n"
;
$factory
->parse_string(
$str
);
# from file
"\nfrom file:\n======\n"
;
$factory
->parse_file(
"books.xml"
);
# from standard input
"\nfrom standard input:\n======\n"
;
$factory
->parse_file(
*STDIN
);
Every time you should receive the following result:
<books>
<entry>
<title>Title 1</title>
</entry>
<other_entry>
<title>Other title</title>
</other_entry>
<entry>
<title>Title 3</title>
</entry>
</books>
DESCRIPTION
Parse large XML files or streams without being loaded into memory and print to the standard output only the fragments that match to the filtering rules specified by the two parameters: record and find_data.
METHODS
new()
new({
root
=> document_root,
record
=> {
entry1
=> 1,
entry2
=> 1,
...
entrym
=> 1
}
find_data
=> {
str1
=> 1,
str2
=> 1,
...
strn
=> 1
}
})
Parameters:
root: a string used to enclose the whole document;
record: is a hash
with
element names considered as being record
delimiters;
find_data: the record is printed out
if
at least one string from this hash
matches to the xml data.
Note: The
values
from the two hashes have to be set to 1, just to force key to be
defined
.
AUTHOR
Daniel Necsoiu, Ericsson, <daniel.necsoiu@gmail.com; daniel.necsoiu@ericsson.com>
BUGS
Please report any bugs or feature requests to bug-etr-xml-sax-filterhandler at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=ETR-XML-SAX-FilterHandler. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc ETR::XML::SAX::FilterHandler
You can also look for information at:
RT: CPAN's request tracker (report bugs here)
http://rt.cpan.org/NoAuth/Bugs.html?Dist=ETR-XML-SAX-FilterHandler
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
ACKNOWLEDGEMENTS
LICENSE AND COPYRIGHT
Copyright 2015 Daniel Necsoiu, Ericsson.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.