jaxbAan de slag met jaxb


Opmerkingen

Deze sectie geeft een overzicht van wat jaxb is en waarom een ontwikkelaar het misschien wil gebruiken.

Het moet ook alle grote onderwerpen binnen jaxb vermelden en een link naar de gerelateerde onderwerpen bevatten. Aangezien de Documentatie voor jaxb nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.

Codegeneratie van XSD

JAXB kan worden gebruikt om klassen te genereren van een model dat is gedefinieerd in XSD. Het zal dan mogelijk zijn om XML-documenten die tegen deze XSD zijn gemaakt rechtstreeks als Java-exemplaren te lezen en omgekeerd deze exemplaren als XML-document op te slaan.

Neem de volgende XSD opgeslagen in een bestand met de naam 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>
 

U kunt JAXB gebruiken om automatisch klassen te genereren die overeenkomen met deze XSD met behulp van deze opdrachtregel (op voorwaarde dat de bin-map van uw JDK zich op uw pad bevindt)

xjc SimpleModel.xsd
 

Dit genereert een pakket op basis van de naamruimte van uw XSD (hier mycorp.schemas.simplemodel) met de volgende klassen:

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

De ObjectFactory wordt gebruikt om instanties te maken van de klasse (n) die zijn gegenereerd. In sommige gevallen lijkt dit een triviale verpakking rond een

new Person();
 

Maar in meer complexe gevallen zal het de juiste creëren wrappers rond uw instances het verstrekken van de ontbrekende schakel om goed marshall en unmarshall de objecten naar en van XML.

Het pakket-info.java bevat informatie over de XSD in het algemeen.

Alle andere bestanden zijn klassen afgeleid van het model beschreven in de XSD. Hier hebben we alleen Person.java omdat er slechts één object in ons model is.

Het gebruik van andere command line argumenten Jaxb en XJC u immense macht over de gegenereerde code. XJC biedt ook middelen om plug-ins te gebruiken of te maken om beyoond te worden en dingen te doen zoals:

  • Laat de gegenereerde code een interface implementeren of een klasse uitbreiden.
  • Genereer automatisch toString, hashcode, gelijk aan etc met de klasse.
  • Automatisch toewijzen tussen xml-typen (eenvoudig of complex) en JavaType.
  • Voeg aangepaste code of annotaties in de gegenereerde code in.

En veel veel meer

Je kunt ook andere tools gebruiken om met xjc voor jou te werken, Maven-plug-ins (minstens 4 die ik ken), Ant-taak enz. Vaak kunnen deze tools dingen uitvoeren die moeilijk te krijgen zijn met alleen de referentie-implementatie thorugh-opdrachtregel .

Installatie of instellingen

De JAXB Reference Implementation (JAXB-RI) is opgenomen in de Java Development Kit sinds JDK 6 update 3.

Raadpleeg de onofficiële JAXB-gids voor aanvullende informatie over welke JAXB-RI-versie is opgenomen in specifieke versies van de JDK.