Introduktion til JiBX

1. Oversigt

JiBX er et værktøj til binding af XML-data til Java-objekter. Det giver solid ydeevne sammenlignet med andre almindelige værktøjer som JAXB.

JiBX er også ret fleksibel sammenlignet med andre Java-XML-værktøjer ved hjælp af bindende definitioner til at afkoble Java-strukturen fra XML-repræsentation, så hver kan ændres uafhængigt.

I denne artikel undersøger vi de forskellige måder, som JiBX leverer til at binde XML til Java-objekter.

2. Komponenter i JiBX

2.1. Bindende definitionsdokument

Bindedefinitionsdokumentet specificerer, hvordan dine Java-objekter konverteres til eller fra XML.

JiBX-bindingscompileren tager en eller flere bindende definitioner som input sammen med faktiske klassefiler. Det kompilerer bindingsdefinitionen i Java bytecode ved at føje den til klassefilerne. Når klassefilerne er blevet forbedret med denne kompilerede bindende definitionskode, er de klar til at arbejde med JiBX-runtime.

2.2. Værktøjer

Der er tre hovedværktøjer, som vi skal bruge:

  • BindGen - at generere bindende og matchende skemadefinitioner fra Java-kode
  • CodeGen - at oprette Java-koden og en bindende definition fra et XML-skema
  • JiBX2Wsdl - at lave bindingsdefinitionen og en matchende WSDL sammen med en skemadefinition fra eksisterende Java-kode

3. Maven-konfiguration

3.1. Afhængigheder

Vi er nødt til at tilføje den jibx-kørende afhængighed i pom.xml:

 org.jibx jibx-run 1.3.1 

Den seneste version af denne afhængighed kan findes her.

3.2. Plugins

For at udføre de forskellige trin i JiBX som kodegenerering eller bindingsgenerering skal vi konfigurere maven-jibx-plugin i pom.xml.

I det tilfælde, hvor vi skal starte fra Java-koden og generere bindings- og skemadefinitionen, lad os konfigurere pluginet:

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

Når vi har et skema, og vi genererer Java-kode og bindingsdefinition, bliver maven-jibx-plugin er konfigureret med oplysningerne om skema-filsti og sti til kildekodebiblioteket:

 org.jibx maven-jibx-plugin ... generer-java-kode-fra-skema skema-codegen src / main / jibx kunde-skema.xsd sand kompilering-bindende bindemål / genererede kilder sand sand sand 

4. Bindende definitioner

Bindende definitioner er kernedelen af ​​JiBX. En grundlæggende bindingsfil specificerer kortlægningen mellem XML- og Java-objektfelter:

  ...   

4.1. Strukturkortlægning

Strukturmapping får XML-strukturen til at ligne objektstrukturen:

  ...  ...   ...  

De tilsvarende klasser for denne struktur vil være:

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

4.2. Kollektion og Array Kortlægninger

JiBX-binding giver en nem måde at arbejde med en samling objekter på:

    ...  ... 

Lad os se tilsvarende kortlægning af Java-objekter:

public class Order {List addressList = new ArrayList (); ... // getters og settere her} offentlig statisk klasse Adresse {privat Navn på streng; ... // standard getters og setter}

4.3. Avancerede kortlægninger

Indtil videre har vi set en grundlæggende kortlægningsdefinition. JiBX-kortlægning giver forskellige varianter af kortlægning som abstrakt kortlægning og kortlægning af arv.

Lad os se, hvordan vi kan definere en abstrakt kortlægning:

   ...          

Lad os se, hvordan dette binder til Java-objekter:

offentlig klasse kunde {privatperson person; ... privat telefon hjemTelefon; privat telefon kontor; telefon; // standard getters og setter}

Her har vi angivet flere telefon felter i Kunde klasse. Det telefon i sig selv er igen en POJO:

offentlig klasse Telefon {privat String nummer; // standard getters og setter}

Ud over regelmæssige tilknytninger kan vi også definere udvidelser. Hver udvidelseskortlægning refererer til en eller anden basiskortlægning. På tidspunktet for marskalering bestemmer den faktiske objekttype, hvilken XML-kortlægning der anvendes.

Lad os se, hvordan udvidelserne fungerer:

    ...   ...  ... 

Lad os se på de tilsvarende Java-objekter:

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

5. Konklusion

I denne hurtige artikel har vi undersøgt forskellige måder, hvorpå vi kan bruge JiBX til at konvertere XML til / fra Java-objekter. Vi har også set, hvordan vi kan bruge bindende definitioner til at arbejde med forskellige repræsentationer.

Fuld kode til denne artikel er tilgængelig på GitHub.


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