i love XML Pull Builder API and it may not be good sign as i am its author ...
Anyway, this is second reincarnation of XPP2 XmlPullNode but this time done with
all very nice decomposition into interfaces and value objects and both
really easy to use (no longer prefixes or raw XML names are required)
and really fast and powerful - essentially can be as fast as streaming
pull parser as user can for part of tree work with pull parser directly :-)
The API is modeled after
XML Information Set
and allows building incrementally XML trees from events streamed from pull parser
(user can start navigating tree before whole XML input was parsed!)
and has an unique ability to bypass tree building for selected sub trees
to work directly with underlying event stream.
This coupled with ability to create XML tree that can mix in any
Java Object allows to represent objects derived from XML (databinding)
in the XML tree.
The unique feature of API is ability to achieve high performance
that is common in streaming parsers
and ease of use associated with tree approaches in the same API
by provising very precise control over XML tree creation and access
to underlying streaming parser during tree creation
(API users needs to do it if and only if they do want to bypass default tree
creation and replace it with their customized object tree, work directly with XML
events or just skip unneded parts of XML that do not need to be in XML node tree).
Now the challenge is how to do it in C++ and to make it easy
(especially memory operations) so it can favorably compare to DOM ...