1. Memahami teknologi parsing XML
1.1. Konsep terkait XML
(1) Aturan Sintaks DTD: XML, yang merupakan mekanisme verifikasi file XML. Anda dapat membandingkan dokumen XML dengan file DTD untuk melihat apakah dokumen tersebut mematuhi spesifikasi dan apakah elemen dan label digunakan dengan benar.
(2) XML adalah dasar dari SOA.
1.2. Teknologi pemrosesan XML
(1) Untuk menggunakan XML, kita perlu mengakses data melalui prosesor XML atau XMLAPI. Saat ini, JAXP menyediakan dua metode untuk memproses XML: DOM dan SAX.
① DOM: DOM mengakses data dan struktur dalam dokumen XML secara terprogram, berdasarkan struktur pohon dokumen XML dalam memori. Kerugiannya adalah bahwa ia membutuhkan banyak overhead untuk memuat seluruh dokumen XML ke dalam memori.
②SAX: Berdasarkan peristiwa yang digerakkan, satu segmen digunakan untuk menguraikan satu segmen, yang memecahkan masalah DOM mengambil banyak memori, tetapi kerugiannya adalah bahwa ia tidak dapat mengakses dokumen secara acak.
(2) Untuk menyelesaikan masalah DOM dan Saksofon, streamapiforxml berbasis aliran (Stax untuk singkat) telah muncul. Telah ditambahkan ke JAXP1.4 dari JDK6, dan Stax juga didorong oleh acara.
(3) DOM, SAX dan STAX Semua proses XML dari struktur dokumen, tetapi banyak aplikasi hanya fokus pada data dokumen itu sendiri, sehingga teknologi pengikatan data XML muncul.
Ikatan Data: Mengacu pada proses mengekstraksi data dari media penyimpanan (dokumen XML dan database) dan mewakili data ini melalui program, yaitu, mengikat data ke struktur memori yang dapat dipahami dan dioperasikan oleh mesin virtual.
XML Binding Framework: Castor, JaxB, Jibx, Quick, Zeus, dll.
2. Alat Pemrosesan XML: XStream
2.1. Ikhtisar XStream
(1) Xstream adalah kerangka kerja open source yang sederhana dan mudah digunakan untuk membuat serial objek Java menjadi XML, atau deserializing XML ke dalam objek Java. Fitur Utama Xstream:
(2) Komposisi arsitektur xstream:
Konverter: Ketika Xstream bertemu dengan objek yang perlu dikonversi, itu didelegasikan ke implementasi konverter yang sesuai.
IO (Input/Output): XStream diabstraksi dari data XML yang mendasari melalui HierarchicalStreamWriter dan HierarchicalStreamReader, dan masing -masing digunakan untuk operasi serialisasi dan deserialisasi.
Konteks: Ketika Xstream membuat serialisasi objek deserialisasi, dua kelas MarshallingContext dan UnmarshallingContext dibuat, dan gerbang menara memproses data dan mendelegasikannya ke konverter yang sesuai.
FACADE (Pintu Masuk Terpadu): Mengintegrasikan 3 poin di atas bersama -sama dan membukanya untuk pengguna dengan antarmuka terpadu.
2.2. Awal yang cepat
(1) Buat XStream dan tentukan parser XML
XStreamxStream = newxstream (newdomdriver ());
Jika Anda tidak menentukan parser, Xstream akan menggunakan parser XPP (XMLPullParser) secara default, yang merupakan parser berkecepatan tinggi.
(2) Contohnya adalah sebagai berikut:
2.3. Gunakan alias XStream
(1) Dalam contoh di atas, nama kelas lengkap dari objek Java sesuai dengan elemen root dari file XML, dan nama atribut sesuai dengan elemen simpul file XML. Namun, dalam situasi aktual, baik objek Java dan objek XML mungkin sudah menentukan nama, jadi pemetaan alias diperlukan.
Xstream memiliki 3 konfigurasi alias:
Nama Kategori: Gunakan Alias (StringName, CLASSTYPE).
Anggota Kelas Alias: Gunakan Aliasfield (Stringalias, ClassDefinedIn, StringfieldName).
Anggota kelas digunakan sebagai alias atribut: Gunakan aliasattribute (ClassDefinedIn, StringattributeName, Stringalias), dan menamai mereka sendiri tidak memiliki arti, dan mereka juga harus diterapkan pada kelas tertentu melalui eSeAttributEfor (ClassDefinedIn, StringfieldName).
(2) Ubah contoh dalam 2.2 melalui alias:
2.4. Konverter xstream
Selama proses pengembangan, kadang -kadang Anda perlu mengonversi beberapa jenis khusus. Cukup terapkan antarmuka konverter dan hubungi metode Xstream untuk mendaftarkan konverter.
2.5. Anotasi xstream
(1) Anotasi umum untuk xstream adalah sebagai berikut:
(2) Gunakan
XStreamxStream = newxstream (newdomdriver ());
Ada 2 cara untuk memuat objek:
①Method 1:
xstream.processannotations (aaa.class);
xStream.processAnnotations (BBB.Class);
② Metode 2:
xStream.AutodetectanNotations (true); // Otomatis memuat kacang beranotasi dan juga menyimpan objek beranotasi.
2.6. Objek yang mengalir
(1) XStream menyediakan implementasi alternatif untuk ObjectInputStream dan ObjectOutputStream, memungkinkan operasi serialisasi XML atau deserialisasi dalam bentuk aliran objek. Yang sebelumnya adalah XML yang dibaca oleh parser XML berbasis DOM, di sini kita harus menggunakan metode stream untuk parsing.
Contohnya adalah sebagai berikut:
(2) Perbedaan antara menggunakan PrettyWriter dan CompactWriter adalah bahwa PrettyWriter akan memformat XML yang dihasilkan, sedangkan CompactWriter akan mengompres XML yang dihasilkan.
2.7. API Kegigihan
(1) XStream menyediakan cara sederhana untuk bertahan objek dalam koleksi ke dalam file, seperti: xmlarraylist, xmlset, xmlmap, dll.
(2) Sebelum membuat koleksi, Anda juga perlu menentukan strategi persistenceStrate.
2.8. Menangani json
(1) XML memiliki posisi yang tidak tergoyahkan di WebService, tetapi di sebagian besar aplikasi web, JSON ringan masih digunakan sebagai format pertukaran data.
(2) XStream menyediakan JettisonMappedXmldriver dan JsonHierarchicalStreamDriver untuk menyelesaikan konversi objek Java dan JSON.
Contohnya adalah sebagai berikut:
(3) Perbedaan antara JettisonMappedXmldriver dan JsonHierarchicalStreamDriver:
①jettismappedXmldriver menghasilkan JSON terkompresi, sementara JsonHierarchicalStreamDriver menghasilkan JSON yang diformat.
② Jika Anda ingin mengonversi JSON ke suatu objek, Anda hanya dapat menggunakan JettisonMappedXmldriver.
3. Proyek Open Source O/XMapping Umum Lainnya
Perbandingan JAXB, XMLBeans, CSTOR, JIBX:
4. Integrasi dengan SpringoxM
4.1. Tinjauan SpringoxM
(1) SpringoxM telah membuat abstraksi terpadu dan enkapsulasi dari kerangka kerja utama O/XMAPPing. Marshaller dan Unmarshaller adalah dua antarmuka inti Springoxm. Marshaller digunakan untuk mengubah objek menjadi XML, dan Unmarshaller digunakan untuk mengubah XML menjadi objek.
(2) Pembungkus komponen O/XMapping adalah sebagai berikut:
4.2. Konfigurasikan di Spring
(1) Contoh konfigurasi XStreamMarShaller:
5. Ringkasan
(1) Pengikatan data XML dari aplikasi Java dapat diringkas menjadi 2 cara:
Hasilkan Kode Bahasa Java (seperti JAXB, XMLBeans, Castor) berdasarkan dokumen XML.
Gunakan beberapa bentuk metode pengikatan pemetaan, yaitu, atur bagaimana kelas Java dikaitkan dengan XML (seperti XStream, Castor, Jibx).
(2) Perbandingan 2 cara:
Menggunakan struktur dokumen yang stabil yang ditentukan oleh skema atau DTD, dan strukturnya cocok untuk kebutuhan aplikasi, metode pembuatan kode mungkin merupakan pilihan terbaik.
Jika Anda menggunakan kelas Java yang ada, atau jika Anda ingin menggunakan struktur kelas yang mencerminkan penggunaan data aplikasi, bukan struktur XML, metode pemetaan adalah pilihan terbaik.
Meringkaskan
Di atas adalah semua tentang pegas menggunakan OXM untuk analisis pemetaan XML objek. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!