StAX Parser - Ikhtisar
StAX adalah API berbasis JAVA untuk mengurai dokumen XML dengan cara yang sama seperti yang dilakukan parser SAX. Tetapi ada dua poin utama perbedaan antara kedua API -
StAX adalah PULL API sedangkan SAX adalah PUSH API. Ini berarti dalam kasus pengurai StAX, aplikasi klien perlu meminta pengurai StAX untuk mendapatkan informasi dari XML kapan pun dibutuhkan, tetapi dalam kasus pengurai SAX, aplikasi klien diharuskan untuk mendapatkan informasi ketika pengurai SAX memberi tahu aplikasi klien informasi itu tersedia.
StAX API dapat membaca serta menulis dokumen XML. Menggunakan SAX API, xml hanya bisa dibaca.
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 tentang 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 pembaca "kursor" yang bertindak sebagai penunjuk ke node xml.
Saat peristiwa diidentifikasi, elemen xml dapat diambil dari objek peristiwa dan dapat diproses lebih lanjut.
Kapan digunakan?
Anda harus menggunakan parser StAX ketika -
Anda dapat memproses dokumen XML secara linier dari atas ke bawah.
Dokumen tidak bertumpuk secara mendalam.
Anda sedang 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 mengubah urutan item, Anda harus menulis kode dan menyimpan datanya sendiri.
Kelas XMLEventReader
Kelas ini menyediakan iterator kejadian yang dapat digunakan untuk mengulang kejadian yang 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) - Menambahkan acara yang berisi elemen ke XML.
Kelas XMLStreamReader
Kelas ini menyediakan iterator kejadian yang dapat digunakan untuk mengulangi kejadian yang 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) - Menambahkan elemen awal dari nama yang diberikan.
writeEndElement(String localName) - Menambahkan elemen akhir dari nama tertentu.
writeAttribute(String localName, String value) - Menulis atribut ke elemen.