Если вам нужен контроль над генерируемым XML, я рекомендую взглянуть на Betwixt (http://commons.apache.org/betwixt/) - он добавляет множество функциональных возможностей в дайджест Apache (Digester хорош для построения графов объектов из XML, но не так хорош для их генерации).
Если вы действительно не заботитесь о генерируемом XML (просто о том, что он может быть десериализован в будущем), то классы XMLEncoder / Decoder встроены в Java или хорошо - если объекты, которые вы сериализуете, следуют JavaBean спецификация. Самая большая область, в которой я столкнулся с проблемами с решением XMLEncoder / Decoder, - это если у вас есть компонент, который возвращает неизменный список для одного из его свойств - кодировщик не очень хорошо справляется с этой ситуацией.