in reply to XML::Simple and xmlns attributes

I bet the root tag and its attributes are static, right? Use XML::Simple to create the stuff that's supposed to be inside the root tag and prepend the <root xmlns:nonsense="..."> and append the </root>. If there are supposed to be more tags inside the root one, generate the XML with a bogus root tag and then remove the root tag from each side of the generated string. I think this should require the least amount of changes to your code.