Saya sedang mencari perpustakaan java untuk parsing XML (konfigurasi kompleks dan file data), saya googled sedikit tetapi tidak dapat menemukan selain dom4j (Sepertinya mereka bekerja pada V2) .. Saya telah melihat konfigurasi commons tetapi tidak Seperti itu, proyek apache lain pada XML tampaknya dalam mode hibernasi. Saya belum mengevaluasi dom4j sendiri tetapi hanya ingin tahu - Apakah java memiliki perpustakaan parsing xml open source lain dan bagaimana pengalaman Anda dengan dom4j?
Setelah jawaban @ Voo, izinkan saya bertanya yang lain - Haruskah saya menggunakan kelas built-in java atau perpustakaan pihak ketiga seperti dom4j .. Apa keuntungannya?
Jawaban:
Sebenarnya Java mendukung 4 metode untuk mem-parsing XML di luar kotak:
DOM Parser / Builder: Seluruh struktur XML dimuat ke dalam memori dan Anda dapat menggunakan metode DOM yang terkenal untuk bekerja dengannya. DOM juga memungkinkan Anda untuk menulis ke dokumen dengan transformasi Xslt. Contoh:
Parser SAX: Semata-mata untuk membaca dokumen XML. Pengurai Sax dijalankan melalui dokumen dan memanggil metode panggilan balik pengguna. Ada metode untuk memulai / mengakhiri dokumen, elemen dan sebagainya. Mereka didefinisikan dalam org.xml.sax.ContentHandler dan ada kelas helper DefaultHandler kosong.
StAx Reader / Writer: Ini bekerja dengan antarmuka berorientasi data. Program meminta elemen berikutnya ketika siap seperti kursor / iterator. Anda juga dapat membuat dokumen dengannya. Baca dokumen:
Menulis dokumen:
JAXB: Implementasi terbaru untuk membaca dokumen XML: Merupakan bagian dari Java 6 di v2. Ini memungkinkan kita untuk membuat serial objek java dari dokumen. Anda membaca dokumen dengan kelas yang mengimplementasikan antarmuka ke javax.xml.bind.Unmarshaller (Anda mendapatkan kelas untuk ini dari JAXBContext.newInstance). Konteksnya harus diinisialisasi dengan kelas yang digunakan, tetapi Anda hanya perlu menentukan kelas root dan tidak perlu khawatir tentang kelas referensi statis. Anda menggunakan anotasi untuk menentukan kelas mana yang harus elemen (@XmlRootElement) dan bidang mana yang elemen (@XmlElement) atau atribut (@XmlAttribute, sungguh kejutan!)
Menulis dokumen:
Contoh disalin tanpa malu-malu dari beberapa slide kuliah lama ;-)
Sunting: Tentang "API mana yang harus saya gunakan?". Yah itu tergantung - tidak semua API memiliki kemampuan yang sama seperti yang Anda lihat, tetapi jika Anda memiliki kendali atas kelas yang Anda gunakan untuk memetakan dokumen XML JAXB adalah solusi favorit saya, benar-benar elegan dan sederhana (meskipun saya belum menggunakannya untuk dokumen yang sangat besar, bisa jadi agak rumit). SAX juga cukup mudah digunakan dan menjauhlah dari DOM jika Anda tidak memiliki alasan yang bagus untuk menggunakannya - API yang kikuk menurut saya. Saya tidak berpikir ada perpustakaan pihak ke-3 modern yang menampilkan sesuatu yang sangat berguna yang hilang dari STL dan perpustakaan standar memiliki keuntungan yang biasa diuji dengan sangat baik, didokumentasikan dan stabil.
sumber
Java mendukung dua metode untuk parsing XML di luar kotak.
SAXParser
Anda dapat menggunakan parser ini jika Anda ingin mem-parsing file XML besar dan / atau tidak ingin menggunakan banyak memori.
http://download.oracle.com/javase/6/docs/api/javax/xml/parsers/SAXParserFactory.html
Contoh: http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/
DOMParser
Anda dapat menggunakan parser ini jika Anda perlu melakukan pertanyaan XPath atau perlu memiliki DOM lengkap.
http://download.oracle.com/javase/6/docs/api/javax/xml/parsers/DocumentBuilderFactory.html
Contoh: http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/
sumber
Jika Anda menginginkan API seperti DOM - yaitu, tempat parser XML mengubah dokumen menjadi pohon Elemen dan Atribut node - maka setidaknya ada empat untuk dipilih: DOM sendiri, JDOM, DOM4J, dan XOM. Satu-satunya alasan yang mungkin untuk menggunakan DOM adalah karena itu dianggap sebagai standar dan disediakan di JDK: dalam semua hal lain, yang lain semuanya lebih unggul. Preferensi saya sendiri, untuk kombinasi kesederhanaan, kekuatan, dan kinerja, adalah XOM.
Dan tentu saja, ada gaya pemrosesan lainnya: antarmuka parser tingkat rendah (SAX dan StAX), antarmuka pengikat objek-data (JAXB), dan bahasa deklaratif tingkat tinggi (XSLT, XQuery, XPath). Yang terbaik untuk Anda tergantung pada persyaratan proyek dan selera pribadi Anda.
sumber
Poin Nikita sangat bagus: jangan bingung menjadi dewasa dengan yang buruk. XML tidak banyak berubah.
JDOM akan menjadi alternatif lain untuk DOM4J.
sumber
Anda tidak perlu perpustakaan eksternal untuk parsing XML di Java. Java telah hadir dengan implementasi bawaan untuk SAX dan DOM sejak lama.
sumber
Untuk orang-orang yang tertarik menggunakan JDOM, tetapi takut itu belum diperbarui dalam beberapa saat (terutama tidak memanfaatkan generik Java), ada garpu yang disebut CoffeeDOM yang persis membahas aspek-aspek ini dan memodernisasi JDOM API, baca lebih lanjut di sini:
http://cdmckay.org/blog/2011/05/20/introducing-coffeedom-a-jdom-fork-for-java-5/
dan unduh dari halaman proyek di:
https://github.com/cdmckay/coffeedom
sumber
VTD-XML adalah tugas berat XML parsing lib ... lebih baik daripada yang lain dalam segala hal ... di sini adalah makalah 2013 yang menganalisis semua kerangka kerja XML yang tersedia di platform java ...
http://sdiwc.us/digitlib/journal_paper.php?paper=00000582.pdf
sumber