I had a set spec, and went crawling for XML modules, and this was the only one to meet it. Seems to work a real charm, and even using the pure Perl XML::Smart::Parser seems to be fine (one of the items in my spec was that the entire app must be able to work pure Perl - if necessary), and seems to co-operate with XML::Parser fine too.
Uses the author's own Object::MultiType module for internal data representation which results in a bit of an unfamiliar structure, but makes sense given five minutes thought. Luckily you can convert to a hash, so you can work in peace, then pass it back again when you want to regenerate the XML :-)
Anyway, I'm surprised this hasn't got any more reviews, it's well worth checking out. I found it far more powerful than XML::Mini, which doesn't even seem to support CDATA out of the box. Keep up the good work Sir!