jaxbKomma igång med jaxb


Anmärkningar

Det här avsnittet ger en översikt över vad jaxb är, och varför en utvecklare kanske vill använda den.

Det bör också nämna alla stora ämnen inom jaxb och koppla till de relaterade ämnena. Eftersom dokumentationen för jaxb är ny kan du behöva skapa initialversioner av relaterade ämnen.

Kodgenerering från XSD

JAXB kan användas för att generera klasser från en modell definierad i XSD. Det kommer då att vara möjligt att läsa XML-dokument gjorda mot detta XSD direkt som java-instanser och omvänt spara dessa instanser som XML-dokument.

Ta följande XSD sparat i en fil med namnet 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>
 

Du kan använda JAXB för att generera klasser automatiskt för att matcha detta XSD med hjälp av den här kommandoraden (förutsatt att din JDK: s papperskorg är på din väg)

xjc SimpleModel.xsd
 

Detta kommer att generera ett paket baserat på namnområdet för din XSD (här mycorp.schemas.simplemodel) med följande klasser:

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

ObjectFactory används för att skapa instanser av klassen som genererades. I vissa fall verkar det som en trivial omslag runt en

new Person();
 

Men i mer komplexa fall kommer det att skapa rätt omslag runt dina instanser som ger den saknade länken för att ordentligt marshall och avmarkera objekten till och från XML.

Paketet-info.java innehåller information om XSD i allmänhet.

Alla andra filer är klasser som härrör från modellen som beskrivs i XSD. Här har vi bara Person.java eftersom det bara finns ett objekt i vår modell.

Användning av andra kommandoraden argument JAXB och XJC ger dig enorm makt över den genererade koden. XJC tillhandahåller också medel för att använda eller skapa plugins för att gå till och göra saker som:

  • Låt den genererade koden implementera ett gränssnitt eller utöka en klass.
  • Generera automatiskt toString, hashcode, lika etc med klassen.
  • Karta automatiskt mellan xml-typer (enkel eller komplex) och JavaType.
  • Injicera anpassad kod eller kommentarer i den genererade koden.

Och mycket mycket mer

Du kan också använda andra verktyg för att interagera med xjc för dig, Maven-plugins (minst 4 som jag känner till), Ant-uppgift etc. Ofta kan dessa verktyg utföra saker som skulle vara svåra att få med bara referensimplementering genom kommandorad .

Installation eller installation

JAXB Reference Implementation (JAXB-RI) har inkluderats i Java Development Kit sedan JDK 6 uppdatering 3.

Se den inofficiella JAXB-guiden för ytterligare information om vilken JAXB-RI-version som ingår i specifika versioner av JDK.