Daftar Isi:
- Kode serbaguna versus kode yang disesuaikan
- Manfaat dari kustomisasi
- Gagasan di balik JAXB adalah menciptakan kelas yang disesuaikan dengan kebutuhan Anda. Anda mengambil deskripsi dokumen XML, jalankan melalui program khusus yang disebut compiler
Video: JSP Tutorial #14 - Call Java class from JSP 2024
Anda dapat membuat kode yang disesuaikan dengan JAXB - the Java API untuk XML Binding . Dengan JAXB, Anda mengambil dokumen XML dan Anda membuat file kelas Java yang sempurna untuk memproses dokumen. Bila kebutuhan Anda berubah dan kelas tidak lagi melakukan apa yang Anda inginkan, Anda hanya menelurkan subkelas baru.
Saat menulis kode SAX atau DOM, Anda membuat program pemrosesan XML. Program Anda membaca sebuah dokumen, dan menggunakan dokumen tersebut untuk melakukan pekerjaan yang bermanfaat - dimulai dengan sesuatu yang tidak berbahaya seperti public void startElement or node. getNodeName (). Either way, program Anda tidak membuat asumsi tentang apa yang ada di dalam dokumen. Dokumen ini memiliki elemen akar, beberapa elemen anak, dan itu saja. Asumsi khusus yang Anda buat tentang dokumen ini benar-benar mempersempit kegunaan kode.
Kode serbaguna versus kode yang disesuaikan
Pertimbangkan kode pada Listing 1 dan 2. Listing 1, pindai lima simpul di pohon dokumen. Kelima node tersebut harus diatur dengan cara tertentu, atau program crash. (Daftar tersebut menginginkan komentar dan simpul akar, dengan setidaknya dua anak langsung berada di bawah simpul akar.)
Listing 1: Menampilkan beberapa node
import org. w3c. dom. Node;
import org. w3c. dom. NamedNodeMap;
kelas MyTreeTraverser
{
MyTreeTraverser (Node node)
{
Sistem. di luar. println (node. getNodeName ());
simpul = simpul. getFirstChild ();
Sistem di luar. println (node. getNodeName ());
simpul = simpul. getNextSibling ();
Sistem di luar. println (node. getNodeName ());
simpul = simpul. getFirstChild ();
Sistem di luar. println (node. getNodeName ());
simpul = simpul. getNextSibling ();
Sistem di luar. println (node. getNodeName ());
}
}
Listing 2: Melintasi pohon DOM
organisasi impor. w3c. dom. Node;
import org. w3c. dom. NamedNodeMap;
kelas MyTreeTraverser
{
Simpul Node;
MyTreeTraverser (Node node)
{
ini. node = node;
displayName ();
displayValue ();
if (node. GetNodeType () == Node. ELEMENT_NODE)
displayAttributes ();
Sistem di luar. println ();
displayChildren ();
}
void displayName ()
{
Sistem. di luar. cetak ("Nama:");
Sistem di luar. println (node. getNodeName ());
}
void displayValue ()
{
String nodeValue = simpul. getNodeValue ();
jika (nodeValue! = Null)
nodeValue = nodeValue. memangkas();
Sistem di luar. cetak ("Nilai:");
Sistem di luar. println (nodeValue);
}
void displayAttributes ()
{
NamedNodeMap attribs = node. getAttributes ();
untuk (int i = 0; i { Sistem. di luar. println (); Sistem di luar. cetak ("Atribut:"); Sistem di luar. cetak (attribs item (i) getNodeName ()); Sistem di luar. cetak ("="); Sistem di luar. println (attribs item (i) getNodeValue ()); } } void displayChildren () { Node child = node. getFirstChild (); sementara (anak! = Null) { new MyTreeTraverser (anak); anak = anak. getNextSibling (); } } } Kode pada Listing 2 jauh lebih umum. Kode ini memeriksa struktur dokumen saat berjalan. Ketika kode menemukan node anak, itu scan anak dan mencari cucu. Jika tidak ada cucu, kodenya mencari saudara dan saudari. Kode dapat menangani pohon dokumen - apakah itu memiliki satu node atau seribu node. Jadi, Listing 2 lebih fleksibel daripada Listing 1. Namun, fleksibilitas ini hadir dengan kekurangan - termasuk kemungkinan overhead yang sangat tinggi. Kode pada Listing 2 harus mengurai seluruh dokumen XML - dan kemudian meletakkan representasi pohon dokumen ke dalam memori komputer. Jika dokumennya sangat besar, maka representasinya berukuran besar: Memori menjadi membengkak dengan semua data sementara itu, dan kode pada Listing 2 melambat menjadi merangkak. Bayangkan Anda mencoba pergi ke Faneuil Hall di Boston, Massachusetts. Tidak masalah dari mana Anda memulai; Perjalanan akan selalu membingungkan dan sulit. Bagaimanapun, Anda harus merencanakan rute Anda. Anda bisa tersesat di dekat Revere atau Cambridge atau di pusat kota Boston. Bergantung pada sumber daya Anda, Anda memiliki dua pilihan: Menggunakan peta kertas membutuhkan lebih banyak pekerjaan (lebih banyak waktu, usaha, ketangkasan, dan kesabaran) daripada menggunakan GPS yang berbicara. Mengapa? Karena peta kertas tidak disesuaikan dengan kebutuhan spesifik Anda; Akibatnya, tertulis, "Inilah keseluruhan wilayah metropolitan Boston. Faneuil Hall ada di sana. Anda mencari tahu apa yang harus dilakukan selanjutnya. "Sistem kustom adalah (seperti yang Anda duga) lebih mudah digunakan daripada yang tidak disesuaikan dengan situasi langsung Anda. Dengan demikian, kode pemrosesan XML Listing 2 membuat pohon DOM yang besar dan hemat sumber daya di ruang memori komputer Anda ("Inilah pohonnya - Anda cari tahu apa yang harus dilakukan selanjutnya …") karena kode isn ' t disesuaikanKode ini bekerja untuk dokumen lama - tidak hanya yang Anda miliki - dan selalu melahap sumber daya untuk melakukannya. Inti dari JAXB schema , dan dapatkan kelas baru yang disebut kelas yang dihasilkan . Kelas yang dihasilkan ini disederhanakan untuk bekerja dengan dokumen XML tertentu.
Manfaat dari kustomisasi
Gagasan di balik JAXB adalah menciptakan kelas yang disesuaikan dengan kebutuhan Anda. Anda mengambil deskripsi dokumen XML, jalankan melalui program khusus yang disebut compiler
Hubungan antara bagian dokumen XML dan bagian dari kelas Java disebut
binding . Dengan semua binding ini, sebuah instance dari kelas mewakili satu dokumen XML.
Metode unmarshal membaca sebuah file XML. Metode ini mendapatkan nilai dari dokumen XML, dan memberikan nilai ini pada variabel pada objek Java.
- Dengan metode seperti ini, Anda dapat mengambil dan memodifikasi data dalam dokumen XML.
Gambar 2:
Membaca dan menulis nilai.