Démarrer avec jaxb
Sur cette page
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 le document XML créé sur cette XSD directement en tant qu’instances Java et inversement de sauvegarder ces instances en tant que document XML.
Prenez le 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 se trouve sur votre chemin)
xjc SimpleModel.xsd
Cela va générer un package basé sur l’espace de noms de votre XSD (ici mycorp.schemas.simplemodel) avec les classes suivantes :
- ObjectFactory.java
- package-info.java
- Personne.java
ObjectFactory est utilisé pour créer des instances de la ou des classes qui ont été 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][1] appropriés autour de vos instances fournissant le lien manquant pour [marshall][2] et [unmarshall][3] correctement 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 n’avons que Person.java puisqu’il n’y a qu’un seul objet dans notre modèle.
L’utilisation d’autres lignes de commande [arguments] [4] Jaxb et XJC vous donneront un pouvoir immense 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 :
- Demandez au code généré d’implémenter une interface ou d’étendre une classe.
- Générez automatiquement toString, hashcode, equals etc avec la classe.
- Mappage automatique 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 pour vous, les plugins Maven (au moins 4 à ma connaissance), la tâche Ant, etc. Souvent, ces outils peuvent effectuer des tâches difficiles à obtenir avec uniquement l’implémentation de référence via la ligne de commande. .
[1] : http://docs.oracle.com/javaee/5/api/javax/xml/bind/JAXBElement.html [2] : https://docs.oracle.com/javase/7/docs/api/javax/xml/bind/Marshaller.html [3] : http://docs.oracle.com/javaee/5/api/javax/xml/bind/Unmarshaller.html [4] : https://jaxb.java.net/2.2.4/docs/xjc.html
Installation ou configuration
L’implémentation de référence JAXB (JAXB-RI) est incluse dans le kit de développement Java depuis la mise à jour 3 de JDK 6.
Reportez-vous au [Guide JAXB non officiel] [1] pour plus de détails sur la version JAXB-RI incluse avec des versions spécifiques du JDK.
[1] : https://jaxb.java.net/guide/Which_JAXB_RI_is_included_in_which_JDK_.html