Pengantar JiBX

1. Ikhtisar

JiBX adalah alat untuk mengikat data XML ke objek Java. Ini memberikan kinerja yang solid dibandingkan dengan alat umum lainnya seperti JAXB.

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

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

2. Komponen JiBX

2.1. Dokumen Definisi yang Mengikat

Dokumen definisi binding menentukan bagaimana objek Java Anda dikonversi ke atau dari XML.

Kompiler pengikat JiBX menggunakan satu atau lebih definisi pengikatan sebagai masukan, bersama dengan file kelas yang sebenarnya. Ini mengkompilasi definisi pengikatan ke bytecode Java dengan menambahkannya ke file kelas. Setelah file kelas telah ditingkatkan dengan kode definisi mengikat terkompilasi ini, mereka siap untuk bekerja dengan runtime JiBX.

2.2. Alat

Ada tiga alat utama yang akan kami gunakan:

  • BindGen - untuk menghasilkan definisi skema yang mengikat dan cocok dari kode Java
  • CodeGen - untuk membuat kode Java dan definisi pengikatan dari skema XML
  • JiBX2Wsdl - untuk membuat definisi yang mengikat dan WSDL yang cocok bersama dengan definisi skema dari kode Java yang ada

3. Konfigurasi Maven

3.1. Dependensi

Kita perlu menambahkan dependensi jibx-run di pom.xml :

 org.jibx jibx-run 1.3.1 

Versi terbaru dari ketergantungan ini dapat ditemukan di sini.

3.2. Plugin

Untuk melakukan langkah-langkah berbeda di JiBX seperti pembuatan kode atau pembuatan pengikatan, kita perlu mengkonfigurasi maven-jibx-plugin di pom.xml .

Untuk kasus ketika kita perlu memulai dari kode Java dan menghasilkan definisi binding dan skema, mari konfigurasikan plugin:

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

Ketika kami memiliki skema dan kami membuat kode Java dan definisi pengikatan, maven-jibx-plugin dikonfigurasi dengan informasi tentang jalur file skema dan jalur ke direktori kode 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 bagian inti dari JiBX. File binding dasar menentukan pemetaan antara XML dan bidang objek Java:

  ...   

4.1. Pemetaan Struktur

Pemetaan struktur membuat struktur XML terlihat 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

Penjilidan JiBX memberikan cara mudah untuk bekerja dengan koleksi objek:

    ...  ... 

Mari kita lihat pemetaan objek 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 dasar. Pemetaan JiBX memberikan rasa pemetaan yang berbeda seperti pemetaan abstrak dan warisan pemetaan.

Mari kita lihat bagaimana kita bisa mendefinisikan 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 menetapkan beberapa bidang Telepon di kelas Pelanggan . The Phone sendiri lagi POJO:

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

Selain pemetaan biasa, kami juga dapat menentukan ekstensi. Setiap pemetaan ekstensi mengacu pada beberapa pemetaan dasar. Pada saat marshaling, tipe objek yang sebenarnya memutuskan pemetaan XML mana yang diterapkan.

Mari kita lihat cara kerja ekstensi:

    ...   ...  ... 

Mari kita lihat objek Java yang sesuai:

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

5. Kesimpulan

Dalam artikel singkat ini, kami telah menjelajahi berbagai cara yang dapat kami gunakan untuk menggunakan JiBX untuk mengonversi XML ke / dari objek Java. Kami juga telah melihat bagaimana kami dapat menggunakan definisi yang mengikat untuk bekerja dengan representasi yang berbeda.

Kode lengkap untuk artikel ini tersedia di GitHub.