Je suis un grand fan de JAXB pour manipuler XML. Fondamentalement, il fournit une solution à ce problème (je suppose que je suis familier avec XML, les structures de données Java et les schémas XML):
Travailler avec XML est difficile. Il faut trouver un moyen de prendre un fichier XML - qui est essentiellement un fichier texte - et de le convertir en une sorte de structure de données, que votre programme peut ensuite manipuler.
JAXB prendra un schéma XML que vous écrivez et créera un ensemble de classes correspondant à ce schéma. Les utilitaires JAXB créeront la hiérarchie des structures de données pour manipuler ce XML.
JAXB peut ensuite être utilisé pour lire un fichier XML, puis créer des instances des classes générées - chargées des données de votre XML. JAXB fait également l'inverse: prend les classes Java et génère le XML correspondant.
J'aime JAXB car il est facile à utiliser et est livré avec Java 1.6 (si vous utilisez 1.5, vous pouvez télécharger le JAXB .jars.) La façon dont il crée la hiérarchie des classes est intuitive et, d'après mon expérience, fait un travail décent abstraction du "XML" afin que je puisse me concentrer sur les "données".
Donc, pour répondre à votre question: je m'attendrais à ce que, pour les petits fichiers XML, JAXB soit excessif. Cela nécessite que vous créiez et mainteniez un schéma XML et que vous utilisiez des «méthodes de manuel standard» d'utilisation des classes Java pour les structures de données. (Classes principales, petites classes internes pour représenter les "nœuds", et une énorme hiérarchie d'entre eux.) Ainsi, JAXB n'est probablement pas si génial pour une simple liste linéaire de "préférences" pour une application.
Mais si vous avez un schéma XML plutôt complexe, et beaucoup de données qu'il contient, alors JAXB est fantastique. Dans mon projet, je convertissais de grandes quantités de données entre binaires (qui étaient consommées par un programme C) et XML (afin que les humains puissent consommer et modifier ces données). Le schéma XML résultant n'était pas trivial (plusieurs niveaux de hiérarchie, certains champs pouvaient être répétés, d'autres pas), donc JAXB était utile pour pouvoir manipuler cela.