If the re-write from dom approach to jaxb approach is that drastic, I am not sure we can still call it a conversion.
In any case, keep the desired output as constant, unmarshal (that is the word) the xml to some pre-designed plain-old java objects as custodians of the raw data and then write out the same desired output from them. However, the technical item of unmarshalling hides behind the whole jaxb framework that you need simply have to read chapter after chapter beforehand. Hand waiving verbally clever rhetoric won't do you any good.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com