Rumah Kewangan Peribadi Membina kod kustom dengan Java API untuk XML Binding (JAXB) - dummies

Membina kod kustom dengan Java API untuk XML Binding (JAXB) - dummies

Isi kandungan:

Video: Web Programming - Computer Science for Business Leaders 2016 2024

Video: Web Programming - Computer Science for Business Leaders 2016 2024
Anonim

Anda boleh membina kod tersuai dengan JAXB - API API untuk Mengikat XML . Dengan JAXB, anda mengambil dokumen XML dan anda membuat fail kelas Java yang sesuai untuk memproses dokumen. Apabila keperluan anda berubah dan kelas tidak lagi melakukan apa yang anda mahu lakukan, anda hanya menanam subclass baru.

Apabila anda menulis kod SAX atau DOM, anda membuat program pemprosesan XML. Program anda membaca dokumen, dan menggunakan dokumen untuk melakukan kerja yang berguna - bermula dengan sesuatu yang tidak berbahaya seperti startElement atau node awam yang tidak sah. getNodeName (). Sama ada cara, program anda tidak membuat andaian tentang apa yang ada dalam dokumen itu. Dokumen ini mempunyai elemen akar, beberapa elemen kanak-kanak, dan itu sahaja. Apa-apa anggapan istimewa yang anda buat tentang dokumen ini sebenarnya mempersempit kegunaan kod tersebut.

Kod serba versus berbanding kod tersuai

Pertimbangkan kod dalam Senarai 1 dan 2. Penyenaraian 1, mengimbas lima nod dalam pokok dokumen. Mereka lima nod perlu disusun dengan cara tertentu, atau program tersebut crash. (Penyenaraian itu mahu komen dan nod akar, dengan sekurang-kurangnya dua anak secara langsung di bawah nod akar.)

Senarai 1: Memaparkan beberapa nod

org import. w3c. dom. Nod;

import org. w3c. dom. NamedNodeMap;

kelas MyTreeTraverser

{

MyTreeTraverser (nod nod)

{

System. keluar. println (node ​​getNodeName ());

nod = nod. getFirstChild (); Sistem

. keluar. println (node ​​getNodeName ());

nod = nod. getNextSibling (); Sistem

. keluar. println (node ​​getNodeName ());

nod = nod. getFirstChild (); Sistem

. keluar. println (node ​​getNodeName ());

nod = nod. getNextSibling (); Sistem

. keluar. println (node ​​getNodeName ());

}

}

Penyenaraian 2: Mengembara org import

org. w3c. dom. Nod;

import org. w3c. dom. NamedNodeMap;

kelas MyTreeTraverser

{

Node node;

MyTreeTraverser (nod nod)

{

ini. nod = nod;

displayName ();

displayValue ();

jika (node ​​getNodeType () == Node ELEMENT_NODE) ​​

displayAttributes (); Sistem

. keluar. println ();

paparanChildren ();

}

void displayName ()

{

System. keluar. cetak ("Nama:"); Sistem

. keluar. println (node ​​getNodeName ());

}

void displayValue ()

{

String nodeValue = node. getNodeValue ();

jika (nodeValue! = Null)

nodeValue = nodeValue. trim (); Sistem

. keluar. cetak ("Nilai:"); Sistem

. keluar. println (nodeValue);

}

void displayAtributes ()

{

NamedNodeMap attribs = node. getAttributes ();

untuk (int i = 0; i

{

System. keluar. println (); Sistem

. keluar. cetak ("Atribut:"); Sistem

. keluar. cetak (attribs item (i). getNodeName ()); Sistem

. keluar. cetak ("="); Sistem

. keluar. println (attribs item (i). getNodeValue ());

}

}

void displayChildren ()

{

Node child = node. getFirstChild ();

manakala (anak! = Null)

{

MyTreeTraverser baru (kanak-kanak);

anak = anak. getNextSibling ();

}

}

}

Kod dalam Listing 2 adalah lebih umum. Kod ini menyemak struktur dokumen semasa ia berjalan. Apabila kod itu menemui nod kanak-kanak, ia memindai anak itu dan mencari cucu-cucu. Jika tidak ada cucu, kod itu mencari adik-beradik. Kod ini boleh mengendalikan mana-mana pokok dokumen - sama ada ia mempunyai satu nod atau seribu nod.

Oleh itu, Penyenaraian 2 lebih fleksibel daripada Penyenaraian 1. Walau bagaimanapun, kepelbagaian ini datang dengan kekurangan - termasuk kemungkinan overhead yang tinggi. Kod dalam Listing 2 harus mengurai seluruh dokumen XML - dan kemudian meletakkan perwakilan pokok dokumen itu ke dalam memori komputer. Sekiranya dokumen itu sangat besar, maka perwakilannya adalah besar: Memori akan kembung dengan semua data sementara itu, dan kod dalam Penyenaraian 2 melancarkan kepada merangkak.

Manfaat penyesuaian

Bayangkan anda cuba memandu ke Faneuil Hall di Boston, Massachusetts. Tidak kira di mana anda bermula; perjalanan akan sentiasa mengelirukan dan sukar. Bagaimanapun, anda perlu merancang laluan anda. Anda boleh tersesat di Revere berdekatan atau Cambridge atau di pusat bandar Boston. Bergantung kepada sumber anda, anda mempunyai dua pilihan:

  • Anda boleh berhenti di stesen minyak dan membeli peta. Sekiranya anda berbuat demikian, maka anda tidak boleh sampai ke Faneuil Hall. Lagipun, anda perlu mencari di mana anda berada di peta, cari laluan alternatif, memilih laluan, dan kemudian (surga membantu anda) cuba mengikuti laluan tanpa tersesat lagi.
  • Anda boleh memberitahu sistem GPS yang mahal dan bercakap yang anda ingin masuk ke Faneuil Hall. Sistem ini akan merancang laluan tersuai dan membimbing anda, berpaling dengan belokan, dari mana-mana tempat yang menyedihkan anda ke laluan optimum yang membawa dari sana ke Faneuil Hall. Laluan ini sangat disesuaikan supaya suara GPS mengatakan (contohnya), "Tidak ada tanda di persimpangan ini, tetapi belok kiri pula. "Kemudian, suara itu berkata" Terdapat dua tanda di persimpangan ini, dan tanda-tanda bercanggah antara satu sama lain. Tetapi matikan pula. "

Menggunakan peta kertas mengambil lebih banyak kerja (lebih banyak masa, usaha, ketangkasan, dan kesabaran) daripada menggunakan GPS bercakap. Mengapa? Kerana peta kertas tidak disesuaikan dengan keperluan khusus anda; sebenarnya, ia berkata, "Inilah seluruh kawasan metropolitan Boston. Faneuil Hall ada di sana di suatu tempat. Anda tahu apa yang harus dilakukan selanjutnya. "

Sistem tersuai adalah (seperti yang anda harapkan) lebih mudah digunakan daripada yang tidak disesuaikan dengan situasi terdekat anda. Oleh itu, kod pemprosesan XML Listing 2 menjadikan pohon DOM yang besar dan sumber daya dalam ruang ingatan komputer anda ("Ini pokok - anda memikirkan apa yang perlu dilakukan seterusnya …") kerana kod itu tidak ' t disesuaikan.Kod ini berfungsi untuk mana-mana dokumen lama - bukan hanya yang anda ada di tangan - dan sentiasa gobbles sumber untuk melakukannya.

Inti dari JAXB

Idea di belakang JAXB adalah untuk membuat kelas khusus yang sesuai untuk memenuhi keperluan anda sekarang. Anda mengambil keterangan dokumen XML, jalankan melalui program khas yang dipanggil skema pengkompil , dan dapatkan kelas baru yang dipanggil kelas yang dijana . Kelas yang dihasilkan ini diperkemas untuk berfungsi dengan dokumen XML tertentu.

Sebagai contoh, jika dokumen XML anda mempunyai unsur bernama Jumlah, maka kelas yang dijana boleh mempunyai setTotal dan getTotal methods. Jika elemen dokumen mempunyai atribut penuh, maka kelas yang dihasilkan boleh mempunyai setFullName dan kaedah GetFullName. (Lihat Rajah 1.)

Sambungan antara sebahagian dokumen XML dan sebahagian daripada kelas Java dipanggil mengikat . Dengan semua pengikatan ini, contoh kelas mewakili satu dokumen XML.

Rajah 1: Objek mewakili dokumen.

Jadi bagaimana anda menyambung objek dengan dokumen XML? Nah, kelas yang dihasilkan mempunyai kaedah bernama unmarshal dan marshal. (Lihat Rajah 2.)

  • Kaedah unmarshal membaca fail XML. Kaedah mendapat nilai dari dokumen XML, dan memberikan nilai-nilai ini kepada pembolehubah dalam objek Java.
  • Kaedah marshal menulis fail XML. Kaedah mendapat nilai dari objek Java, dan menggunakan nilai ini untuk membuat dokumen XML.

Dengan kaedah seperti ini, anda boleh mengambil dan mengubah suai data dalam dokumen XML.

Rajah 2: Membaca dan menulis nilai.

Membina kod kustom dengan Java API untuk XML Binding (JAXB) - dummies

Pilihan Editor

Menyesuaikan Invois QuickBooks 2014 dengan Alat Pereka Layout - dummies

Menyesuaikan Invois QuickBooks 2014 dengan Alat Pereka Layout - dummies

Mungkin anda telah menggunakan QuickBooks 2014's Basic Kotak dialog penyesuaian untuk membuat beberapa perubahan pada penampilan invois anda, dan anda belum berpuas hati. Mungkin anda telah melebih-lebihkan batu dan mengamati dengan kotak dialog Penyesuaian Tambahan untuk membuat perubahan selanjutnya, dan mungkin juga yang tidak meninggalkan anda senang dengan rupa invois anda. ...

Nisbah Ekuiti hutang dalam QuickBooks 2012 - dummies

Nisbah Ekuiti hutang dalam QuickBooks 2012 - dummies

Nisbah ekuiti hutang adalah salah satu nisbah leverage yang anda boleh gunakan dalam QuickBooks 2012. Nisbah ekuiti hutang membandingkan hutang jangka panjang syarikat dengan ekuiti pemegang saham atau ekuiti pemilik. Pada asasnya, nisbah ekuiti hutang menyatakan hutang jangka panjang syarikat sebagai peratusan ekuiti pemiliknya. Ekuiti pemegang saham sinonim dengan pemilik ...

Nisbah Ekuiti dalam QuickBooks 2014 - dummies

Nisbah Ekuiti dalam QuickBooks 2014 - dummies

Anda boleh mengesan nisbah ekuiti hutang anda dalam QuickBooks. Nisbah ekuiti hutang membandingkan hutang jangka panjang firma dengan ekuiti pemegang saham atau ekuiti pemilik. Pada asasnya, nisbah ekuiti hutang menyatakan hutang jangka panjang syarikat sebagai peratusan ekuiti pemiliknya. Ekuiti pemegang saham adalah sinonim dengan ekuiti pemilik dan, dalam kes ...

Pilihan Editor

Menambah Kursus ke Profil LinkedIn anda - patung

Menambah Kursus ke Profil LinkedIn anda - patung

Jika anda mengambil kursus satu kali yang tidak menyampaikan sijil atau sebahagian daripada program ijazah yang lebih besar, bahagian Kursus LinkedIn adalah untuk anda. Di samping itu, semakin banyak pelajar menyertai LinkedIn, menyedari peluang besar untuk mencari rangkaian dan pekerjaan. Bahagian Kursus adalah di mana anda menyaksikan kursus terkini ...

10 BerkaitanIn Profil Do dan Larangan - dummies

10 BerkaitanIn Profil Do dan Larangan - dummies

Profil LinkedIn anda adalah identiti digital anda. Dari semua profil media sosial di luar sana, profil LinkedIn adalah yang paling mendalam dan memberikan gambaran menyeluruh anda sebagai seorang profesional. Apabila orang mencari nama anda dalam enjin carian, profil LinkedIn anda sering dikembalikan tinggi dalam hasil carian. Apabila ia datang ...

10 LinkedIn Do dan Larangan - dummies

10 LinkedIn Do dan Larangan - dummies

Rangkaian sosial memerlukan banyak kerja, masa dan usaha . Berikut adalah sepuluh perkara penting dan tidak perlu untuk membantu anda membina hubungan LinkedIn dan mendapatkan nilai yang paling banyak daripada masa anda. Pastikan profil anda lengkap dan terkini Walaupun LinkedIn mempunyai banyak ciri, profil anda masih merupakan salah satu sebab yang paling menarik ...

Pilihan Editor

Percetakan Kebenaran Pengguna dalam QuickBooks 2012 - dummies

Percetakan Kebenaran Pengguna dalam QuickBooks 2012 - dummies

Akauntan sering ingin melihat keizinan pengguna tertentu dalam QuickBooks 2012 Ini benar terutamanya jika anda diaudit oleh CPA anda sebagai sebahagian daripada penutupan tahunan. (Anda mungkin diaudit jika bank mahukan penyata kewangan yang telah diaudit.) QuickBooks 2012 tidak menyediakan cara untuk anda mencetak maklumat yang ditunjukkan ...

Bagaimana Menghasilkan Lembaran Kerja Inventori Fizikal dalam QuickBooks 2017 - dummies

Bagaimana Menghasilkan Lembaran Kerja Inventori Fizikal dalam QuickBooks 2017 - dummies

QuickBooks 2017 melakukan yang cukup baik kerja mengesan inventori, tetapi anda masih perlu kerap mengambil inventori fizikal lengkap tentang apa yang ada dalam stok anda. Kadang-kadang, anda perlu pergi ke segala-galanya dan mengiranya dengan tangan. Maaf. Anda tidak boleh mengelakkan tugas itu. QuickBooks boleh menghasilkan mudah ...

Rasio keuntungan dan QuickBooks 2012 - dummies

Rasio keuntungan dan QuickBooks 2012 - dummies

Nisbah keuntungan menganalisis keuntungan syarikat dan anda boleh menggunakannya dalam QuickBooks 2012. Dalam ertikata, nisbah keuntungan ini adalah nisbah paling penting yang boleh anda kirakan. Mereka biasanya memberikan pandangan berguna yang sangat berguna kepada betapa menguntungkan firma dan mengapa. Sebagai contoh, satu nisbah keuntungan yang penting ialah peratusan margin kasar, ...