113 votes

Qu'est-ce que JAXB et pourquoi devrais-je utiliser?

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.

104voto

poundifdef Points 6005

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.

23voto

joekutner Points 1037

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/

21voto

artgon Points 354

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/

19voto

Il s'agit d'un ORM pour XML". Le plus souvent utilisés avec JAX-WS (et en effet, le Soleil implémentations sont développés ensemble) pour WS Étoile de la Mort systèmes.

9voto

Fabian Steeg Points 24261

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X