jaxbCommencer avec jaxb


Remarques

Cette section fournit une vue d'ensemble de ce qu'est jaxb et pourquoi un développeur peut vouloir l'utiliser.

Il devrait également mentionner tous les grands sujets dans jaxb, et établir un lien avec les sujets connexes. La documentation de jaxb étant nouvelle, vous devrez peut-être créer des versions initiales de ces rubriques connexes.

Génération de code depuis XSD

JAXB peut être utilisé pour générer des classes à partir d'un modèle défini dans XSD. Il sera alors possible de lire un document XML créé contre ce XSD directement en tant qu'instances Java et d'enregistrer ces instances en tant que document XML.

Prenez le fichier XSD suivant enregistré dans un fichier nommé SimpleModel.xsd

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
 targetNamespace="http://myCorp/schemas/simpleModel"
 xmlns:simple="http://myCorp/schemas/simpleModel"
 elementFormDefault="qualified"
 attributeFormDefault="unqualified">
 
 <complexType name="Person">
     <sequence>
         <element name="FirstName" type="string"/>
         <element name="LastName" type="string"/>
         <element name="DateOfBirth" type="dateTime"/>
     </sequence>
 </complexType>
 
</schema>
 

Vous pouvez utiliser JAXB pour générer automatiquement des classes correspondant à ce XSD à l'aide de cette ligne de commande (à condition que le dossier bin de votre JDK soit sur votre chemin)

xjc SimpleModel.xsd
 

Cela générera un paquet basé sur l’espace de noms de votre XSD (ici mycorp.schemas.simplemodel) avec les classes suivantes:

  • ObjectFactory.java
  • package-info.java
  • Person.java

ObjectFactory est utilisé pour créer des instances de la ou des classes générées. Dans certains cas, cela ressemble à une enveloppe triviale autour d'un

new Person();
 

Mais dans des cas plus complexes, il créera les wrappers appropriés autour de vos instances, fournissant le lien manquant pour correctement marshaller et désarrimer les objets vers et depuis XML.

Le package-info.java contient des informations sur le XSD en général.

Tous les autres fichiers sont des classes dérivées du modèle décrit dans le XSD. Ici, nous avons seulement Person.java car il n'y a qu'un seul objet dans notre modèle.

En utilisant d'autres arguments en ligne de commande, Jaxb et XJC vous donneront un immense pouvoir sur le code généré. XJC fournit également des moyens d'utiliser ou de créer des plugins pour aller au-delà et faire des choses comme:

  • Demander au code généré d'implémenter une interface ou d'étendre une classe.
  • Génère automatiquement toString, hashcode, est égal à etc avec la classe.
  • Mapper automatiquement entre les types XML (simples ou complexes) et JavaType.
  • Injecter du code personnalisé ou des annotations dans le code généré.

Et bien plus encore

Vous pouvez également utiliser d'autres outils pour interagir avec xjc, les plug-ins Maven (au moins 4 que je connais), la tâche Ant, etc. Souvent, ces outils peuvent effectuer des tâches difficiles avec la ligne de commande .

Installation ou configuration

L'implémentation de référence JAXB (JAXB-RI) a été intégrée au kit de développement Java depuis la mise à jour 3 du JDK 6.

Reportez-vous au Guide JAXB non officiel pour plus de détails sur la version de JAXB-RI incluse dans des versions spécifiques du JDK.