XML::Struct::Reader(3pm) | User Contributed Perl Documentation | XML::Struct::Reader(3pm) |
XML::Struct::Reader - Read XML streams into XML data structures
my $reader = XML::Struct::Reader->new( from => "file.xml" ); my $data = $reader->read;
This module reads an XML stream (via XML::LibXML::Reader) into XML::Struct/MicroXML data structures.
Read the next XML element from a stream. If no path option is specified, the reader's path option is used (""*"" by default, first matching the root, then every other element).
Read an entire XML document. In contrast to "read"/"readNext", this method always reads the entire stream. The return value is the first element (that is the root element by default) in scalar context and a list of elements in array context. Multiple elements can be returned for instance when a path was specified to select document fragments.
Read an XML element from a stream and return it as array reference with element name, attributes, and child elements. In contrast to method "read", this method expects the stream to be at an element node ("$stream->nodeType == 1") or bad things might happed.
Read all XML attributes from a stream and return a (possibly empty) hash reference.
Read all child elements of an XML element and return the result as (possibly empty) array reference. Significant whitespace is only included if option "whitespace" is enabled.
[ $name => \@children ]
instead of
[ $name => \%attributes, \@children ]
A path is a very reduced form of an XPath expressions (no axes, no "".."", no node tests, "//" only at the start...). Namespaces are not supported yet.
<doc> <x:foo xmlns:x="http://example.org/" bar="doz" /> </doc>
is transformed to this structure, keeping namespace prefixes and declarations as unprocessed element names and attributes:
[ 'doc', {}, [ [ 'x:foo', { 'bar' => 'doz', 'xmlns:x' => 'http://example.org/' } ] ]
Setting this option to '"strip"' will remove all namespace prefixes and namespace declaration attributes, so the result would be:
[ 'doc', {}, [ [ 'foo', { 'bar' => 'doz' } ] ]
Setting this option to '"disallow"' results in an error when namespace prefixes or declarations are read.
Expanding namespace URIs ('"expand'") is not supported yet.
XML elements below the depth are converted to SimpleXML by default or to MicroXML if option "simple" is enabled. This can be configured with option "deep".
This option is useful for instance to access document-oriented XML embedded in data oriented XML.
2019-02-21 | perl v5.28.1 |