Chose the core parser, XML::LibXML.

HTML::TreeBuilder would have worked just fine, but I wanted something that
would preserve whitespace both for testing purposes, and for keeping the
content as close to the original as possible, if the output wasn't faithful
to the original the module users might lose trust.

In the end it doesn't really matter because the real goal is to hide the
look_down() and XPath functionality from either module, so it's just a matter
of choice.