I'm not sure how much data you are going to change, but I myself would/could use XML::LibXML to read in the Doc then use XML::LibXML::XPathContext to pull the node of data I want to play with. The node stays attached inside the doc, so I can make the changes and then re-output the document using toString() or whatever.
Don
WHITEPAGES.COM |INC Everything I've learned in life can be summed up in a small perl script!