From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

Revision history for Perl extension XML::Grove.
Backwards incompatible changes are marked with a `*'.
Changes in Version 1.0
Version 1.0 is virtually a complete rewrite. The summary below
presents the changes as a bullet list, but you should probably reread
the POD docs because they have been updated and should be much clearer
than before (let me know if you don't think so!).
* XML::Grove REQUIRES Perl 5.005
* The class structure of XML::Grove changes somewhat.
* XML::Grove::Document now contains the document information where
XML::Grove itself used to hold that information.
* The class XML::Grove is now the common superclass of all classes
in the XML::Grove module, and XML::Grove isa Data::Grove (in
libxml-perl).
* Internal class XML::Grove::_Common is gone.
If you had created extensions to XML::Grove and added methods to
XML::Grove::_Common, you should move them to XML::Grove.
* You now access grove properties directly, i.e.
$element_name = $element->{Name};
instead of using methods to access the properties.
* XML::Grove objects all now appear to have Parent references.
* This is done using tied hashes and arrays, see Data::Grove::Tied
if you see any wierd problems. Use
$real_object = $node->{Raw};
to get the real object behind the tied hash.
* No More XML::Grove::Iter!!
* all scalars are now XML::Grove::Characters objects, if you store a
scalar value into element content it will be converted to an
XML::Grove::Characters object.
* visit_grove is now visit_document.
* visit_scalar is now visit_characters. The object you receive is an
XML::Grove::Characters object and $characters->{Data} gives you the
text.
* XML::Grove::Visitor is now Data::Grove::Visitor in libxml-perl
* Visitor now checks the visitor object for methods it supports and
silently ignores undefined methods. If the visited object has a
`Contents' property, Visitor will call `children_accept' or
`children_accept_name' if there is no defined method.
* All properties are mixed case, see XML::Grove(3) and the
grove builder and parser man pages for attribute names.
* FIXME check all places where Iter, visit_scalar, and delegate occur.
* XML::Parser::Grove is replaced by by using XML::Parser::PerlSAX (in
libxml-perl) and XML::Grove::Builder. See XML::Grove::Builder for usage.
* added more tests and a `t' directory