Not very helpful, but I feel compelled to say that there's really no such thing as "XML which is not well formed". If it's not well formed, it's not XML you can successfully handle with an XML Parser.
And you should probably consider using XML::XSLT because XSLT is the specific language created to handle XML. It's a language only a mother could love, but it's designed for the purpose. Not that perl isn't a perfectly good tool for this job, but XSLT is a tool designed to do nothing else but this job.
Nobody says perl looks like line-noise any more
kids today don't know what line-noise IS ...