XML-CompactTree-XS
view release on metacpan or search on metacpan
=over 5
=item *
$node->[1] contains the local name (there is no support for
namespaces on these types of nodes yet)
=item *
$node->[2] contains the node value
=back
=head2 Skipping Less-Significant Nodes
White-space (non-significant or significant), processing-instruction
and comment nodes can be completely skipped, using the following
flags:
XCT_IGNORE_WS
XCT_IGNORE_SIGNIFICANT_WS
XCT_IGNORE_PROCESSING_INSTRUCTIONS
XCT_IGNORE_COMMENTS
=head1 NAMESPACES
Namespaces of element nodes are stored in the element node as an
integer. 0 always represents nodes without namespace, all other
namespaces are assigned unique numbers in an increasing order as they
appear. You can pass an empty hash reference to the parsing functions
to obtain the mapping.
=head2 Example
use XML::CompactTree::XS;
use XML::LibXML::Reader;
my $reader = XML::LibXML::Reader->new(location => $ARGV[0]);
my %ns;
my $data = XML::CompactTree::XS::readSubtreeToPerl( $reader, XCT_DOCUMENT_ROOT, \%ns );
$ns_map[$ns{$_}]=$_ for keys %ns;
my @nodes = ($data);
while (@nodes) {
my $node = shift @nodes;
my $type = $node->[0];
if ($type == XML_READER_TYPE_ELEMENT) {
print "element $node->[1] is from ns $node->[2] '$ns_map[$node->[2]]'\n";
push @nodes, @{$node->[4]}; # queue children
} elsif ($type == XML_READER_TYPE_DOCUMENT) {
push @nodes, @{$node->[2]}; # queue children
}
}
=head1 PLANNED FEATURES
Planned flags:
XCT_USE_QNAMES - use QNames instead of local names for all nodes
XCT_TEXT_AS_STRING - put text nodes into the tree as plain scalars
XCT_PRESERVE_PARENT - add a slot with a weak reference to the parent node
XCT_MERGE_TEXT_NODES - merge adjacent text/cdata nodes together
Features: allow blessing the array refs to default or user-specified
classes; the default classes would provide a very small subset of DOM
methods to retrieve node information, manipulate the tree, and
possibly serialize the parse tree back to XML.
=head1 AUTHOR
Petr Pajas, C<< <pajas@matfyz.cz> >>
=head1 BUGS
Please report any bugs or feature requests to
C<bug-xml-compacttree-xs@rt.cpan.org>, or through the web interface at
L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=XML-CompactTree-XS>.
I will be notified, and then you'll automatically be notified of progress on
your bug as I make changes.
=head1 COPYRIGHT & LICENSE
Copyright 2008-2009 Petr Pajas, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
=head1 SEE ALSO
XML::LibXML::Reader
=cut
1; # End of XML::CompactTree::XS
( run in 0.522 second using v1.01-cache-2.11-cpan-39bf76dae61 )