0.07 2026-04-21
- XML namespace handling when creating elements with namespace prefixes
- xmlns attribute present only when needed
- cleaner xc() creation with XML::LibXML::Document as a parameter
- children() now returns only child elements to match chaining semantics
- auto_indent() formatting no longer mutates the original DOM
- reference inputs are now parsed via a private safe default XML::LibXML parser
- parent() now stops at the document root (returns same element when called on root)
- add map_selection() and grep_selection() methods for functional element filtering and transformation
- add data() method for storing arbitrary per-element metadata
- switch from Moose to Class::XSAccessor (test run went from 1,490s down to 0,778s)
0.06 2018-11-21
- fix configure_requires dependency, thanks Slaven Rezic (RT127733)
0.05 2017-10-17
- set_io_any() accepts a second argument, IO::Any options
- using canonical XML - toStringC14N() for stringification
- replaces XML::Tidy with the _reindent_children() function (experimental)
0.04 2017-10-08
- fix xc(XML::LibXML::Document->new()) case
- add attr() method
- "-" (minus) as attribute name in element constructor means to set text of the element
- add reg_global_ns() method
- find() accepts extra look-up namespaces
0.03 2017-03-04
- s/append_and_current/append_and_select/
- add append() method
- add name() method
- add rename() method
- add each() method
- add remap() method
- add rm() / remove_and_parent() method
0.02 2017-02-21
- namespaces support
- chained methods reworked into selectors (XML::Chain::Selector)
- add find($xpath) method
- first version of auto_indent(1) using XML::Tidy (do not use in persistent environments [rt.cpan.org #120296])
- single() method (XML::Chain::Element)
- empty() method to remove all child elements
- loading and storing XML files / XML strings using IO::Any
0.01 2017-01-18
- initial prototype version