JAXB is definitely the solution.
Why? Well, it's inside the JDK 6, so you'll never find it unmaintained.
It uses Java annotations to declare XML-related properties for classes, methods and fields.
Tutorial 1
Tutorial 2
Note: JAXB also enables you to easily 'unmarshal' XML data (which was previously marshalled from Java object instances) back to object instances.
One more great thing about JAXB is: It is supported by other Java-related technologies, such as JAX-RS (a Java RESTful API, which is availible as part of Java EE 6). JAX-RS can serve and receive JAXB objects on the fly, without the need of marshalling/unmarshalling them. You might want to check out Netbeans, which contains out-of-the-box support for JAX-RS. Read this tutorial for getting started.
edit:
To marshall/unmarshall 'random' (or foreign) Java objects, JAXB offers fairly simple possibility: One can declare an XmlAdapter and 'wrap' existing Java classes to be JAXB-compatible. Usage of such XmlAdapter is done by using the @XmlJavaTypeAdapter-annotation.