look into JAXB / JAX-WS, unmarshal your XML directly into the objects generated from xjc. you could wirte adaptors to wrap the generated classes to fit your needs or have constructors in your own classes that take the generated objects as args.
if don't already have a proper XSD, you can create the XSD on this site:
http://www.hitsw.com/xml_utilites/
run xjc from the command line, pass the XSD as an argument - or google how to add it as an extrnal tool in eclipse
here's some bare bones code I dug out to show how to marshal / unmarshal
rgds,
Phil