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!