Pengenalan kepada JiBX

1. Gambaran keseluruhan

JiBX adalah alat untuk mengikat data XML ke objek Java. Ia memberikan prestasi yang baik berbanding dengan alat biasa lain seperti JAXB.

JiBX juga cukup fleksibel jika dibandingkan dengan alat Java-XML lainnya, menggunakan definisi mengikat untuk memisahkan struktur Java dari representasi XML sehingga masing-masing dapat diubah secara mandiri.

Dalam artikel ini, kita akan meneroka pelbagai cara yang disediakan oleh JiBX untuk mengikat XML ke objek Java.

2. Komponen JiBX

2.1. Dokumen Definisi Mengikat

Dokumen definisi mengikat menentukan bagaimana objek Java anda ditukar ke atau dari XML.

Penyusun pengikat JiBX mengambil satu atau lebih definisi mengikat sebagai input, bersama dengan fail kelas sebenar. Ini menyusun definisi mengikat ke dalam bytecode Java dengan menambahkannya ke fail kelas. Setelah fail kelas disempurnakan dengan kod definisi mengikat yang disusun ini, fail-fail tersebut siap digunakan dengan jangka masa JiBX.

2.2. Alat

Terdapat tiga alat utama yang akan kami gunakan:

  • BindGen - untuk menghasilkan definisi skema yang mengikat dan sepadan dari kod Java
  • CodeGen - untuk membuat kod Java dan definisi yang mengikat dari skema XML
  • JiBX2Wsdl - untuk membuat definisi mengikat dan WSDL yang sepadan dengan definisi skema dari kod Java yang ada

3. Konfigurasi Maven

3.1. Kebergantungan

Kita perlu menambahkan kebergantungan menjalankan jibx di pom.xml :

 org.jibx jibx-run 1.3.1 

Versi terbaru dari ketergantungan ini boleh didapati di sini.

3.2. Pemalam

Untuk melakukan pelbagai langkah dalam JiBX seperti penjanaan kod atau penjilidan pengikat, kita perlu mengkonfigurasi plugin maven-jibx di pom.xml .

Untuk kes apabila kita perlu memulakan dari kod Java dan menghasilkan definisi pengikatan dan skema, mari konfigurasikan pemalam:

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

Apabila kita mempunyai skema dan kita menghasilkan kod Java dan definisi yang mengikat, plugin maven-jibx dikonfigurasi dengan maklumat mengenai jalur fail skema dan jalan ke direktori kod sumber:

 org.jibx maven-jibx-plugin ...   generate-java-code-from-schema  schema-codegen   src/main/jibx  customer-schema.xsd  true    compile-binding  bind   target/generated-sources true true true    

4. Definisi Mengikat

Definisi yang mengikat adalah bahagian utama JiBX. Fail pengikat asas menentukan pemetaan antara bidang objek XML dan Java:

  ...   

4.1. Pemetaan Struktur

Pemetaan struktur menjadikan struktur XML mirip dengan struktur objek:

  ...  ...   ...  

Kelas yang sesuai untuk struktur ini adalah:

public class Customer { private Person person; ... // standard getters and setters } public class Person { private String lastName; ... // standard getters and setters } 

4.2. Koleksi dan Pemetaan Array

Pengikatan JiBX menyediakan cara mudah untuk bekerja dengan koleksi objek:

    ...  ... 

Mari lihat objek pemetaan Java yang sesuai:

public class Order { List addressList = new ArrayList(); ... // getters and setters here } public static class Address { private String name; ... // standard getters and setter }

4.3. Pemetaan Lanjutan

Sejauh ini kita telah melihat definisi pemetaan asas. Pemetaan JiBX memberikan rasa pemetaan yang berbeza seperti pemetaan abstrak dan pewarisan pemetaan.

Mari lihat bagaimana kita dapat menentukan pemetaan abstrak:

   ...          

Mari kita lihat bagaimana ini mengikat objek Java:

public class Customer { private Person person; ... private Phone homePhone; private Phone officePhone; // standard getters and setters }

Di sini kami telah menentukan beberapa medan Telefon di kelas Pelanggan . The Telefon itu sendiri adalah lagi yang Pojo:

public class Phone { private String number; // standard getters and setters }

Selain pemetaan biasa, kami juga dapat menentukan peluasan. Setiap pemetaan pelanjutan merujuk kepada beberapa pemetaan asas. Pada masa marshaling, jenis objek sebenar memutuskan pemetaan XML mana yang akan diterapkan.

Mari lihat bagaimana sambungan berfungsi:

    ...   ...  ... 

Mari lihat objek Java yang sesuai:

public class Identity { private long customerId; // standard getters and setters }

5. Kesimpulan

Dalam artikel ringkas ini, kami telah menjelajahi berbagai cara untuk menggunakan JiBX untuk menukar XML ke / dari objek Java. Kami juga telah melihat bagaimana kami dapat menggunakan definisi yang mengikat untuk bekerja dengan perwakilan yang berbeza.

Kod penuh untuk artikel ini boleh didapati di GitHub.