I have to disagree with Shlomi's downrating below.
This module does what it's designed to do and does it well.
Sure, it's not the Swiss-army-knife of XML parsing and formatting, but for any XML that *can* be represented as a perl data structure, this works.
The documentation describes how to force it to return arrays when normally it wouldn't.
As for saying that XML was *designed* to allow markup inside text, then no: that would be where you'd use a CDATA node, not a text node.
Worse than horrible trying to install this on a virgin machine. Install a really old version first (0.26 iirc). But make sure that your env isn't too long or you won't be able to upgrade to this version. Go figure.
There are much better ways of doing this. This module really concerns me - basically if a date looks like it might be past 2038, the module subtracts 60 years and then passes the new value to Time::Local.
It then has to fudge around with the return value -- removing those 60 years and accounting for leap years.
One thing this module does not account for it what happens after 2098? Will we then need Time::Local::Extended::Extended? This module feels like a hack on an already crappy perl-internal date/time handling system.
(Disclaimer: I'm a contributor to the DateTime project @ datetime.perl.org)