Il est gars là prestation de serment en haut et en bas que JAXB est la meilleure chose depuis le pain tranché. Je suis curieux de voir ce que stackoverflow utilisateurs pense que le cas d'utilisation est pour JAXB et ce qui fait une bonne ou une mauvaise solution pour ce cas.
Réponses
Trop de publicités?Je suis un grand fan de JAXB pour la manipulation de XML. Fondamentalement, il apporte une solution à ce problème (je suis en supposant que la familiarité avec le langage XML, Java structures de données et de Schémas XML):
Travailler avec XML est difficile. On a besoin d'un moyen de prendre un fichier XML qui est en fait un fichier texte et de le convertir en une sorte de structure de données, votre programme peut ensuite manipuler.
JAXB prendra un Schéma XML que vous écrivez et de créer un ensemble de classes qui correspondent à ce schéma. Le JAXB des services publics de créer la hiérarchie de structures de données pour la manipulation de XML.
JAXB peut ensuite être utilisé pour lire un fichier XML, et ensuite créer des instances des classes générées chargé avec les données de votre XML. JAXB également fait l'inverse: les classes java et génère le XML correspondant.
J'aime JAXB, car il est facile à utiliser et est livré avec la version 1.6 de Java (si vous utilisez la version 1.5, vous pouvez télécharger le JAXB .les pots.) La façon dont il crée la hiérarchie de classes est intuitive, et dans mon expérience, un emploi décent abstraction de la "XML" afin que je puisse me concentrer sur des "données".
Donc, pour répondre à votre question: je pense que, pour les petits fichiers XML, JAXB peut-être exagéré. Il vous oblige à créer et à maintenir un schéma XML, et pour une utilisation "standard manuel des méthodes" de l'utilisation des classes Java pour les structures de données. (Principales classes, les petits inner-classes pour représenter les "noeuds", et une vaste hiérarchie d'entre eux.) Donc, JAXB est probablement pas idéal pour un linéaire simple liste de "préférences" pour une application.
Mais si vous avez un complexe de schéma XML, et beaucoup de données qu'il contient, puis JAXB est fantastique. Dans mon projet, j'ai été la conversion de grandes quantités de données entre le binaire (ce qui a été consommé par un programme C) et XML (de sorte que les êtres humains peuvent utiliser et modifier des données). La résultante de Schéma XML est non trivial (de nombreux niveaux de la hiérarchie, certains champs pourraient être répétées, d'autres ne pouvaient pas) donc JAXB était utile d'être en mesure de le manipuler.
Voici une raison de ne pas l'utiliser: rendement en souffre. Il y a une bonne affaire de surcharge lorsque le regroupement et le désordonnancement. Vous pouvez également envisager une autre API for XML-la liaison de l'Objet-comme JiBX: http://jibx.sourceforge.net/
J'utilise JAXB au travail tout le temps et j'adore ça. Il est parfait pour les complexes schémas XML qui sont toujours en évolution et surtout bonne pour un accès aléatoire de balises dans un fichier XML.
J'ai hate de pimp mais je viens de commencer un blog et c'est littéralement la première chose que j'ai posté sur!
Découvrez-le ici: http://blog.gonigberg.com/2010/04/21/getting-started-with-jaxb/
Avec JAXB, vous pouvez créer automatiquement des représentations XML de vos objets (marshalling) et de l'objet des représentations de l'XML (unmarshalling).
Aussi loin que le Schéma XML est concerné, vous avez deux choix:
- Générer des classes Java à partir d'un fichier XSD
- Générer un XSD à partir de vos classes Java
Il y a aussi certains plus simples de la sérialisation XML bibliothèques comme XStream, Autoclave ou XMLBeans qui pourraient être des solutions de rechange.