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, will be availible
as part of Java EE 6 in one year or so). 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.