Java StAX Parser - Ikhtisar
StAX adalah API berbasis Java untuk mengurai dokumen XML dengan cara yang sama seperti yang dilakukan parser SAX. Tetapi ada dua perbedaan utama antara kedua API -
StAX adalah PULL API, sedangkan SAX adalah PUSH API. Artinya dalam kasus parser StAX, aplikasi klien perlu meminta parser StAX untuk mendapatkan informasi dari XML kapan pun dibutuhkan. Namun dalam kasus pengurai SAX, aplikasi klien diperlukan untuk mendapatkan informasi saat pengurai SAX memberi tahu aplikasi klien bahwa informasi tersedia.
StAX API dapat membaca serta menulis dokumen XML. Menggunakan SAX API, file XML hanya dapat dibaca.
Pengaturan Lingkungan
Untuk menggunakan StAX parser, Anda harus memiliki stax.jar di classpath aplikasi Anda.
Berikut adalah fitur-fitur StAX API -
Membaca dokumen XML dari atas ke bawah, mengenali token yang menyusun dokumen XML dengan format yang baik.
Token diproses dalam urutan yang sama seperti yang muncul di dokumen.
Melaporkan program aplikasi sifat token yang ditemukan oleh parser saat terjadi.
Program aplikasi menyediakan pembaca "peristiwa" yang bertindak sebagai iterator dan mengulangi peristiwa tersebut untuk mendapatkan informasi yang diperlukan. Pembaca lain yang tersedia adalah "kursor" yang bertindak sebagai penunjuk ke node XML.
Saat peristiwa diidentifikasi, elemen XML dapat diambil dari objek peristiwa dan dapat diproses lebih lanjut.
Kapan Menggunakan?
Anda harus menggunakan parser StAX ketika -
Anda dapat memproses dokumen XML secara linier dari atas ke bawah.
Dokumen tidak bertumpuk secara mendalam.
Anda memproses dokumen XML yang sangat besar yang pohon DOMnya akan menghabiskan terlalu banyak memori. Implementasi DOM tipikal menggunakan sepuluh byte memori untuk mewakili satu byte XML.
Masalah yang harus dipecahkan hanya melibatkan sebagian dari dokumen XML.
Data tersedia segera setelah dilihat oleh parser, sehingga StAX berfungsi dengan baik untuk dokumen XML yang masuk melalui aliran.
Kekurangan SAX
Kami tidak memiliki akses acak ke dokumen XML, karena diproses dengan cara hanya meneruskan.
Jika Anda perlu melacak data yang telah dilihat parser atau di mana parser telah mengubah urutan item, maka Anda harus menulis kode dan menyimpan datanya sendiri.
Kelas XMLEventReader
Kelas ini menyediakan iterator kejadian yang bisa digunakan untuk mengulang kejadian saat mereka terjadi saat mengurai dokumen XML.
StartElement asStartElement() - Digunakan untuk mengambil nilai dan atribut elemen.
EndElement asEndElement() - Disebut di akhir elemen.
Characters asCharacters() - Dapat digunakan untuk mendapatkan karakter seperti CDATA, spasi, dll.
Kelas XMLEventWriter
Antarmuka ini menentukan metode untuk membuat acara.
add(Event event) - Tambahkan acara yang berisi elemen ke XML.
Kelas XMLStreamReader
Kelas ini menyediakan iterator kejadian yang bisa digunakan untuk mengulang kejadian saat mereka terjadi saat mengurai dokumen XML.
int next() - Digunakan untuk mengambil acara berikutnya.
boolean hasNext() - Digunakan untuk mengecek event lebih lanjut ada atau tidak.
String getText() - Digunakan untuk mendapatkan teks dari suatu elemen.
String getLocalName() - Digunakan untuk mendapatkan nama elemen.
Kelas XMLStreamWriter
Antarmuka ini menentukan metode untuk membuat acara.
writeStartElement(String localName) - Tambahkan elemen awal dari nama yang diberikan.
writeEndElement(String localName) - Tambahkan elemen akhir dari nama yang diberikan.
writeAttribute(String localName, String value) - Menulis atribut ke suatu elemen.