Introduksjon til JiBX

1. Oversikt

JiBX er et verktøy for å binde XML-data til Java-objekter. Det gir solid ytelse sammenlignet med andre vanlige verktøy som JAXB.

JiBX er også ganske fleksibel sammenlignet med andre Java-XML-verktøy, ved å bruke bindende definisjoner for å koble Java-strukturen fra XML-representasjon, slik at hver kan endres uavhengig.

I denne artikkelen vil vi utforske de forskjellige måtene JiBX gir for å binde XML til Java-objekter.

2. Komponenter av JiBX

2.1. Bindende definisjonsdokument

Forbindelsesdefinisjonsdokumentet spesifiserer hvordan Java-objektene dine konverteres til eller fra XML.

JiBX bindende kompilator tar en eller flere bindende definisjoner som input, sammen med faktiske klassefiler. Den kompilerer bindingsdefinisjonen i Java bytecode ved å legge den til klassefilene. Når klassefilene er forbedret med denne kompilerte bindende definisjonskoden, er de klare til å jobbe med JiBX-kjøretid.

2.2. Verktøy

Det er tre hovedverktøy som vi skal bruke:

  • BindGen - å generere bindende og matchende skjemadefinisjoner fra Java-kode
  • CodeGen - for å opprette Java-koden og en bindende definisjon fra et XML-skjema
  • JiBX2Wsdl - å lage bindingsdefinisjonen og en matchende WSDL sammen med en skjemadefinisjon fra eksisterende Java-kode

3. Maven-konfigurasjon

3.1. Avhengigheter

Vi må legge til jibx-kjørt avhengighet i pom.xml:

 org.jibx jibx-run 1.3.1 

Den siste versjonen av denne avhengigheten finner du her.

3.2. Plugins

For å utføre de forskjellige trinnene i JiBX som kodegenerering eller bindingsgenerering, må vi konfigurere maven-jibx-plugin i pom.xml.

For det tilfellet når vi trenger å starte fra Java-koden og generere bindings- og skjemadefinisjonen, la oss konfigurere pluginet:

 org.jibx maven-jibx-plugin ... src / main / resources * -binding.xml template-binding.xml true process-classes bind 

Når vi har et skjema og vi genererer Java-kode og bindingsdefinisjon, blir maven-jibx-plugin er konfigurert med informasjonen om skjemafilen og banen til kildekodekatalogen:

 org.jibx maven-jibx-plugin ... generer-java-kode-fra-skjema skjema-kodegen src / main / jibx kunde-skjema.xsd sann kompilering-bindende bindemål / genererte kilder sant sant sant 

4. Bindende definisjoner

Bindende definisjoner er kjernen i JiBX. En grunnleggende bindingsfil spesifiserer kartleggingen mellom XML- og Java-objektfelt:

  ...   

4.1. Strukturkartlegging

Strukturkartlegging får XML-strukturen til å ligne objektstrukturen:

  ...  ...   ...  

De tilsvarende klassene for denne strukturen kommer til å være:

offentlig klasse kunde {privatperson person; ... // standard getters and setters} public class Person {private String lastName; ... // standard getters and setters} 

4.2. Samling og Array Kartlegginger

JiBX-binding gir en enkel måte å jobbe med en samling objekter på:

    ...  ... 

La oss se tilsvarende kartlegging av Java-objekter:

public class Order {List addressList = new ArrayList (); ... // getters og setters her} offentlig statisk klasse Adresse {private Strengnavn; ... // standard getters og setter}

4.3. Avanserte kartlegginger

Så langt har vi sett en grunnleggende kartdefinisjon. JiBX-kartlegging gir forskjellige smaker av kartlegging som abstrakt kartlegging og kartlegging av arv.

La oss se hvordan vi kan definere en abstrakt kartlegging:

   ...          

La oss se hvordan dette binder seg til Java-objekter:

offentlig klasse kunde {privatperson person; ... privat telefon hjemmeTelefon; privat telefonkontorTelefon; // standard getters og setters}

Her har vi spesifisert flere Telefon felt i Kunde klasse. De Telefon i seg selv er igjen en POJO:

offentlig klasse Telefon {privat Stringnummer; // standard getters og setters}

I tillegg til vanlige tilordninger kan vi også definere utvidelser. Hver utvidelseskartlegging refererer til noen basiskartlegging. På tidspunktet for marshaling bestemmer den faktiske objekttypen hvilken XML-kartlegging som skal brukes.

La oss se hvordan utvidelsene fungerer:

    ...   ...  ... 

La oss se på de tilsvarende Java-objektene:

offentlig klasse Identitet {privat lang kundeId; // standard getters og setters}

5. Konklusjon

I denne raske artikkelen har vi utforsket forskjellige måter vi kan bruke JiBX til å konvertere XML til / fra Java-objekter. Vi har også sett hvordan vi kan bruke bindende definisjoner til å jobbe med forskjellige representasjoner.

Full kode for denne artikkelen er tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found