Anda di halaman 1dari 18

Working with XML

1.1 Menginstal XML Support

NetBeans menyediakan dukungan ekstensif untuk pengembangan dengan XML. Tapi itu tidak
dibundel dengan NetBeans 3.3.2, jadi Anda harus mendapatkannya dari Pusat Pembaruan. Buka
Tools menu  Update Center untuk meluncurkan Update Center Wizard. Periksa Pusat Pembaruan
NetBeans. Anda akan menemukan beberapa modul di bawah node XML, CSS Support melalui XML
Tree Editor (lihat Gambar 1).

Instal mereka semua. Setelah Itu IDE restart, Lihat pada Help menu  Help Sets  XML Support
untuk petunjuk lengkap tentang cara menggunakan semua fitur. Dalam bab ini kami akan
menyebutkan poin tertinggi dan kemudian membangun beberapa contoh.

Gambar 1. Menginstal Modul XML Support

1.2 Overview

Kami akan menghabiskan sebagian besar bab ini mempelajari dukungan XML yang tersedia di
NetBeans. Sebelum dengan mendetail, Namun Anda harus mendapatkan gambaran tentang apa
yang tersedia dan bagaimana semuanya cocok satu sama lain. Anda kemudian akan siap untuk terjun
ke topik tertentu.

1.2.1 Template

NetBeans menyediakan berbagai template untuk Anda mulai membuat XML berikut dokumen:

 XML biasa
 XML dengan DTD disertakan atau direferensikan
 DTD saja
 Cascading Style Sheet (CSS)
 Lembar Gaya yang Dapat Diperluas (XSL)
 Katalog entitas XML Spesifikasi OASIS

Anda juga dapat memasang katalog XML yang memenuhi spesifikasi lain, tetapi hanya OASIS
spesifikasi secara eksplisit didukung untuk membuat katalog baru.

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
1.2.2 Menjelajah dan Mengedit

Setelah Anda menggunakan template untuk membuat dokumen berbasis XML baru atau memasang
yang sudah ada dokumen, Anda akan ingin menelusuri dan mengeditnya. Jika XML terbentuk dengan
baik, Anda dapat membuka file simpul dokumen dan jelajahi di Explorer. NetBeans juga
menyediakan editor teks dan editor pohon untuk memodifikasi file XML atau untuk memeriksa
kontennya dengan cermat. Editor pohon memberikan tampilan node seperti tampilan Explorer, dan
editor properti khusus yang berubah menjadi cocok dengan jenis objek dari node yang dipilih saat
ini. Menu konteks membantu Anda mempertahankan sumber XML terbentuk dengan baik dan
konsisten dengan DTD selama pengeditan melalui Check XML dan Validate XML tindakan, yang
keduanya akan dijelaskan di bagian selanjutnya.

1.2.3 Menghasilkan Dokumentasi

Setelah bekerja keras untuk membuat DTD, Anda mungkin ingin mendokumentasikannya sehingga
orang lain dapat membagikannya nilai. Semudah membuat Javadoc untuk sumber Java. Klik kanan,
pilih Generate Documentation, dan selesai. Anda mendapatkan dokumen XHTML yang menjelaskan
konten dari DTD, yang dapat Anda tambahkan dengan teks yang menjelaskan arti bisnis dari elemen
XML dan atribut.

1.2.4 Mengakses dengan Java

Tentu saja, Anda ingin mengakses dokumen XML Anda dengan Java untuk memanfaatkan
sepenuhnya XML kekuasaan. Langkah pertama semudah membuat dokumentasi. Klik kanan DTD dan
pilih Generate DOM Tree Scanner or SAX Document Handler Wizard untuk menghasilkan sumber
untuk Java kelas untuk mengakses XML. Gunakan DOM Tree Scanner untuk memodifikasi dokumen
XML, dan gunakan a SAX Document Handler lebih ringan jika Anda hanya perlu membaca dokumen.
Kami akan mengambil lebih dekat melihat ini sepanjang sisa bab ini.

1.2.5 Dukungan Skema XML

Dukungan skema XML akan segera hadir. NetBeans 3.4 akan memiliki beberapa peningkatan terkait
XML, termasuk validasi dokumen XML dengan Skema XML. Lihat XML— fitur terencana untuk
NetBeans 3.4 (http://xml.netbeans.org/plans/features34.html) untuk spesifikasinya. NetBeans 4.0
seharusnya membuat Anda lebih bersemangat. Lihat XML—halaman indeks fitur terencana
(http://xml.netbeans.org/plans/features.html) untuk melihat lebih jauh ke depan. Tentu saja,
perangkat pengembangan apa pun tidak mungkin selalu diperbarui sepenuhnya memajukan
teknologi. Tetapi NetBeans dengan arsitektur yang sangat modular melakukan pekerjaan yang luar
biasa menghadirkan fitur baru dengan cepat. Jika Anda ingin mempercepat prosesnya, pelajari cara
membangun modul NetBeans dari buku ini dan mulai berpartisipasi dalam komunitas open source.

1.3 Editor XML

Mari buat dokumen XML dengan DTD. Kami membutuhkan area kerja, jadi pertama-tama buat Java
baru paket bernama XMLWork. Klik kanan paket di Explorer, pilih New  XML and DTD XML
with DTD untuk meluncurkan New Wizard, dan membuat dokumen XML baru dari a templat. Beri
nama Inventaris lalu klik Selesai. Dokumen muncul sebagai simpul di Explorer dan dalam tampilan

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
editor pohon dari Editor Sumber. Buka node di Explorer dan Editor Sumber, dan Anda akan melihat
bahwa kedua tampilan identik. Ketika node tingkat atas terbuka, nama Inventaris muncul tiga kali,
pertama sebagai nama seluruh dokumen, selanjutnya sebagai Nama elemen root DOCTYPE di DTD,
dan terakhir sebagai nama elemen tingkat atas di data XML (lihat Gambar 2). Klik kanan node tingkat
atas dan pilih Edit untuk mengakses informasi yang sama teks biasa.

Gambar 2. The XML tree editor and text editor

Setiap perubahan yang dibuat dalam tampilan hierarki segera diterapkan ke tampilan teks. Anda
dapat melihat ini dengan mengklik bolak-balik antara tampilan hierarki dan tab tampilan teks di
bagian bawah Sumber Editor. Mari buka tampilan teks agar lebih mudah ditonton. Klik kanan tab
tampilan teks, pilih Dock View Into  New Single Frame, dan Anda dapat melihat kedua tampilan
secara bersamaan.

Kita perlu menambahkan beberapa elemen dan atribut untuk membuat dokumen kita menarik.
Inventory Kami dokumen akan menjelaskan Kits, yang berisi Parts; Supplier, yang memproduksi
Parts; dan Parts, yang memiliki Size dan Colour. Semuanya akan memiliki Description.

Klik kanan (baik dalam tampilan pohon Penjelajah atau Editor Sumber) node elemen Inventory, yang
merupakan node terakhir bernama Inventory. Pilih dari menu konteks Tambahkan Elemen. Beri
nama kit, klik OK, dan perhatikan bahwa elemen baru ditambahkan di dalam elemen Inventaris
tingkat atas. Apakah kamu melihat semua pilihan saat menu konteks untuk Tambah dibuka? Anda
dapat menambahkan apa pun dari Atribut ke Teks, semua yang Anda butuhkan untuk pengeditan
data XML lengkap. Jadi mari tambahkan atribut.
Klik kanan Inventory lagi; kali ini pilih Tambahkan Atribut. Beri nama Deskripsi, dan berikan nilai
Inventaris Kit. Seringkali lebih mudah untuk menambahkan atribut baru saat membuat elemen.
Cukup klik Tambahkan tombol saat wizard Elemen terbuka, alih-alih langsung ke toZmbol OK, dan
wizard Tambahkan Atribut kecil akan terbuka. Anda juga dapat mengakses wizard Tambahkan
Atribut dari editor properti khusus yang muncul di panel kanan editor pohon setiap kali ada elemen
dipilih di panel kiri. Untuk menambahkan beberapa teks ke elemen Bagian, klik kanan, pilih
Tambahkan Teks dan lalu isi Bagian A di Kit.

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
Lanjutkan menggunakan tampilan hierarki untuk menambahkan elemen dan atribut (seperti yang
ditunjukkan pada Gambar 3) hingga tampilan teks dokumen XML Anda cocok dengan Contoh 1
(kecuali untuk baris kosong yang tidak signifikan).Anda dapat menyalin dan menempel di editor
pohon. Kami ingin semua elemen Bagian memiliki hal yang sama Deskripsi, Bagian A. Setelah Anda
membuat Deskripsi Bagian A pertama, Anda dapat menyalin dan menempel ke elemen Bagian
lainnya. Tentu saja, Anda cukup menempelkan Contoh 1 langsung ke file editor teks. Tetapi tujuan
dari latihan ini adalah untuk mendapatkan pengalaman dengan editor pohon. Dengan besar,
dokumen XML yang kompleks, editor pohon jauh lebih mudah digunakan karena secara otomatis
menyimpan file sintaks benar. Memindahkan node untuk merestrukturisasi data dengan operasi
salin, potong, dan tempel cepat dan akurat.

Gambar 3. Adding a new attribute

Contoh 1. Inventory.xml setelah menambahkan elemen dan atribut

<?xml version="1.0" encoding="UTF-8"?>


<!-- Created by vaughn on April 26, 2002, 6:07 PM -->
<!DOCTYPE Inventory [
<!ELEMENT Inventory ANY>
]>
<Inventory Description="Kit Inventory">
<Kit Description="The first kit">
<Part Description="Part A">Part A in Kit</Part>

</Kit>
<Supplier Description="Our favorite supplier">
<Part Description="Part A">Part A in Supplier</Part>
</Supplier>
<Part Description="Part A" Size="Just right" Color="Purple">Part
A
alone</Part>
</Inventory>
Contoh kami kecil, tetapi cukup untuk mendemonstrasikan apa yang dapat dilakukan NetBeans
dengan dokumen XML. Kami akan membuatnya tetap kecil saat membuat DTD, CSS, dan file lainnya
berdasarkan kontennya.

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
1.4 Pengeditan XML

Mari kita lihat fitur-fitur lain selain editor yang disediakan NetBeans untuk digunakan dokumen XML.

1.4.1 Memeriksa dan Memvalidasi XML

Saat dokumen XML dibuka di Explorer, secara otomatis diperiksa sintaksnya. Jika kamu mengubah
dokumen XML di editor teks, sebaiknya jalankan pemeriksaan sintaks secara manual.

Klik kanan di mana saja di editor teks atau di simpul tingkat atas dokumen XML di Explorer atau
editor pohon, lalu pilih Check XML. Setiap kesalahan akan diidentifikasi dalam Output jendela.

Anda juga dapat memilih Validate XML dari menu konteks. Validasi memverifikasi bahwa XML
adalah dijelaskan secara lengkap dan benar dalam DTD. Lakukan sekarang dengan contoh dokumen
XML kami. Klik kanan dan pilih Validate XML. Jendela keluaran akan menampilkan banyak kesalahan
karena bagian DTD contoh kita kosong. Sayangnya, menambahkan elemen data XML tidak
menghasilkan DTD yang sesuai. Sayangnya, Anda tidak dapat menggunakan editor pohon untuk
membangun DTD Anda.

Jika ada file DTD eksternal yang sesuai, Anda cukup menetapkan DTD eksternal ke XML Anda
dokumen. Kami belum memiliki file seperti itu, tetapi mari kita telusuri prosesnya untuk referensi di
masa mendatang. Di jendela Explorer klik kanan node untuk file XML yang membutuhkan DTD. Itu
Inventory masuk contoh kita. Di menu konteks pilih Add Document Type untuk membuka Add
Document Type dialog. Jika file DTD dapat diakses dari jarak jauh, masukkan URL-nya di bidang teks
Public ID:. Atau, jika itu di sistem file lokal, masukkan namanya di bidang teks System ID:. Karena
kami juga tidak punya pilihan yang tersedia belum, cukup klik Cancel.

Satu-satunya pilihan lain adalah mengetikkan informasi DTD secara manual di editor teks. Jadi kamu
punya lebih tahu apa yang Anda lakukan, dan fitur Periksa XML pasti akan berguna. Ganti instruksi <!
DOCTYPE> dari contoh dokumen XML Anda dengan teks di Contoh 2. Jangan lupa untuk Memeriksa
XML dan Validasi XML.

Contoh 11-2. Teks DTD untuk Inventory.xml

<!DOCTYPE Inventory [
<!ELEMENT Inventory (Supplier|Kit|Part)*>
<!ATTLIST Inventory
Description CDATA #IMPLIED
>

<!ELEMENT Kit (Part)*>


<!ATTLIST Kit
Description CDATA #IMPLIED
>

<!ELEMENT Part ANY>


<!ATTLIST Part
Description CDATA #IMPLIED
Color CDATA #IMPLIED

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
Size CDATA #IMPLIED
>

<!ELEMENT Supplier (Part)*>


<!ATTLIST Supplier
Description CDATA #IMPLIED

>
]>

1.4.2 Mengatur Tampilan Node

Sekarang setelah Anda menambahkan DTD yang valid ke dokumen XML sampel, mari kita lihat
tampilan simpulnya. Itu Jendela Explorer dan tampilan pohon Editor Sumber memberikan tampilan
node yang persis sama dari file XML, jadi tidak masalah di mana Anda bekerja. Buka simpul Inventory
tingkat atas lalu buka dua node di bawah, juga bernama Inventory, satu untuk DTD dokumen, dan
satu lagi untuk datanya. Jika Anda membandingkan tampilan hierarki dengan tampilan teks, Anda
akan menemukan elemen dan atribut dalam data bagian cocok, satu ke satu dalam urutan yang
sama. Tetapi bagian DTD berbeda. Dalam tampilan pohon semua elemen dicantumkan terlebih
dahulu di bawah node ElementDeclLayer, dan atributnya dicantumkan secara terpisah di bawah
AttlistDeclLayer. Perbedaannya ditentukan oleh Tampilan Node dokumen pengaturan. Untuk
mengakses pengaturan Node View (seperti pada Gambar 4), klik kanan node Inventory teratas, pilih
Properties dari menu konteks, dan klik tab View.

Gambar 4. DTD dan node data

Cobalah tampilan yang berbeda. Linear Node View menampilkan deklarasi elemen dan atribut DTD
dalam urutan yang sama dengan dokumen teks. Tampilan Node Data Saja memiliki urutan yang sama
tetapi tersembunyi komentar dan instruksi pemrosesan. Anda dapat mengatur tampilan simpul di
tingkat mana pun, dari yang paling atas simpul ke yang terendah, untuk sepenuhnya menyesuaikan
tampilan keseluruhan dokumen XML yang besar. Pengaturan a tampilan node ke (reset to parent's
value) memberikan tampilan pengaturan yang sama dengan level berikutnya yang lebih tinggi.
Untuk tingkat teratas (reset to parent's value) menerapkan default, Grouped DTD Node View.

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
1.4.3 Menghasilkan DTD

Beberapa fitur XML memerlukan DTD dalam file terpisah, bukan DTD internal. Jadi ada cara untuk
membagi dokumen XML dengan DTD internal menjadi file DTD terpisah dan hanya data dokumen
XML. Klik kanan simpul Inventory tingkat atas, dan pilih Generate DTD dari menu konteks. Dialog
kecil akan muncul meminta Anda untuk memberi nama file DTD baru. Menerima default
Inventory_Inventory, klik Yes pada dialog berikutnya (Apakah Anda ingin menggunakan DTD yang
dihasilkan sebagai jenis dokumen eksternal?), dan XML asli dengan dokumen DTD dibagi rapi
menjadi dua (lihat Gambar 5). Sekarang, Anda dapat membuat file data XML sebanyak yang
diinginkan, semuanya divalidasi dengan cara yang sama file DTD tunggal. Dan Anda memiliki input
DTD yang diperlukan untuk menggunakan fitur-fitur berikut.

Gambar 5. DTD dipisahkan dari dokumen XML

1.4.4 Menghasilkan Dokumentasi

Memiliki file DTD terpisah memungkinkan sejumlah dokumen XML untuk menggunakannya dan
untuk pengembang untuk merancang sejumlah aplikasi untuk menggunakan data yang
dijelaskannya. Kita butuh dokumentasi yang dapat dibaca pengembang untuk membantu mereka
membangun aplikasi mereka. IDE bisa menghasilkan kerangka kerja HTML yang sangat baik untuk
membangun dokumentasi. Cukup klik kanan file DTD Inventory_Inventory, dan pilih Generate
Documentation dari menu konteks. lagi a dialog muncul meminta Anda untuk memberi nama file
dokumentasi baru. Terima default Inventory_InventoryDocumentation, dan file HTML yang
ditunjukkan pada Contoh 11-3 dihasilkan ke mendokumentasikan DTD. Gunakan editor NetBeans
atau editor HTML apa pun untuk menyempurnakan dokumentasi sesuai kebutuhan.

Contoh 11-3. Dokumentasi HTML untuk Inventory.xml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>

<title>DTD Grammar Documentation</title>


<meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8"
/>
</head>

<!-- Generated on May 11, 2002 by NetBeans XML module. -->


<body>

<hr />
<h2>Element Index</h2>
<ul><li><tt><a href="#Inventory">Inventory</a></tt></li>
<li><tt><a href="#Kit">Kit</a></tt></li>
<li><tt><a href="#Part">Part</a></tt></li>
<li><tt><a href="#Supplier">Supplier</a></tt></li>
</ul>

<hr />
<h2>Element Details</h2>

<hr />
<h2><a name="Inventory"></a>Inventory</h2>

<p><b>Declared Attributes</b></p>
<ul><li><tt>#IMPLIED CDATA Description</tt></li>
</ul>
<p><b>Element Content Model</b></p>
<p><tt>(<a href="#Supplier">Supplier</a>&nbsp;|
<a href="#Kit">Kit</a>&nbsp;| <a href="#Part">Part</a>)*</tt></p>
<p><b>Referenced by</b></p>
<p><tt></tt></p>

<hr />
<h2><a name="Kit"></a>Kit</h2>

<p><b>Declared Attributes</b></p>
<ul><li><tt>#IMPLIED CDATA Description</tt></li>
</ul>
<p><b>Element Content Model</b></p>
<p><tt>(<a href="#Part">Part</a>)*</tt></p>
<p><b>Referenced by</b></p>
<p><tt><a href="#Inventory">Inventory</a></tt></p>

<hr />
<h2><a name="Part"></a>Part</h2>

<p><b>Declared Attributes</b></p>
<ul><li><tt>#IMPLIED CDATA Description</tt></li>
<li><tt>#IMPLIED CDATA Color</tt></li>

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
<li><tt>#IMPLIED CDATA Size</tt></li>
</ul>
<p><b>Element Content Model</b></p>
<p><tt>(#PCDATA)*</tt></p>
<p><b>Referenced by</b></p>
<p><tt><a href="#Inventory">Inventory</a>, <a href="#Kit">Kit</a>,
<a href="#Supplier">Supplier</a></tt></p>

<hr />
<h2><a name="Supplier"></a>Supplier</h2>

<p><b>Declared Attributes</b></p>
<ul><li><tt>#IMPLIED CDATA Description</tt></li>
</ul>
<p><b>Element Content Model</b></p>
<p><tt>(<a href="#Part">Part</a>)*</tt></p>
<p><b>Referenced by</b></p>
<p><tt><a href="#Inventory">Inventory</a></tt></p>

</body></html>

1.4.5 Menghasilkan CSS

Demikian pula, Anda dapat dengan mudah membuat dokumen CSS. Klik kanan file DTD
Inventory_Inventory, pilih Generate CSS dari menu konteks, terima nama default
Inventory_InventoryStylesheet, dan file CSS yang ditunjukkan pada Contoh 11-4 dibuat berdasarkan
DTD.

Contoh 11-4. Cascading Stylesheet untuk Inventory.xml

/* Cascade style sheet based on Inventory_Inventory.dtd DTD */


Inventory { display: block }
Kit { display: block }
Part { display: block }
Supplier { display: block }

Seperti file HTML yang dihasilkan di atas, file CSS ini adalah kerangka kerja yang dapat ditingkatkan
oleh pengembang diperlukan. Tujuan penting dari dokumen XML adalah untuk menyimpan konten
informasi dalam standar format yang tidak bergantung pada tampilan presentasi apa pun. Sebelum
informasi dapat dilihat, itu harus diubah menjadi HTML, WML, atau format lain yang dapat dirender
oleh browser, printer, atau perangkat presentasi lainnya. Tujuan penting dari dokumen CSS adalah
untuk mengontrol proses transformasi, sehingga memungkinkan untuk melihat informasi dari
dokumen XML dalam a bentuk yang nyaman. Informasi stylesheet pada Contoh 4 hanya menyatakan
informasi tersebut dari setiap elemen di Inventory.xml harus disajikan dalam blok teks terpisah. Anda
bisa tingkatkan file CSS dengan menambahkan spesifikasi untuk memberikan properti font yang
berbeda untuk setiap elemen Tipe. Misalnya, informasi dari elemen Kit bisa besar dan hijau, dan
informasi dari Part elemen bisa kecil dan merah.

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
1.5 Menghasilkan Kelas Java

Inilah bagian terbaiknya (setelah semua, kami adalah programmer Java): menghasilkan kode sumber
Java untuk memproses dokumen XML. Pertama, kita akan membuat SAX document handler untuk
membaca contoh dokumen XML dan ekstrak nilai elemen dan atributnya. Ini memberi kita serial
read-only akses, berguna dalam aplikasi yang membutuhkan untuk mendapatkan informasi dalam
dokumen XML dengan cepat persyaratan memori minimal. Selanjutnya, kita akan membuat DOM
tree scanner, berguna dalam aplikasi yang perlu mengakses informasi dari dokumen XML dalam
urutan acak, memperbaruinya, dan mengeluarkannya dokumen XML yang dimodifikasi.

1.5.1 Menghasilkan Penangan Dokumen SAX

Contoh kami berikutnya akan menjadi parser Simple API for XML (SAX) dasar yang hanya
mencantumkan file atribut dan teks dalam dokumen XML Inventory.xml kami. Pertama, kita akan
menggunakan SAX Document Handler Wizard untuk menghasilkan sumber untuk kelas Java yang
akan mengurai Inventory.xml. Kami akan tambahkan beberapa baris kode untuk menjalankan parser
dan menampilkan informasi yang diurai. Akhirnya, kita akan melakukannya konfigurasikan parameter
layanan eksekusi dan jalankan.

Untuk meluncurkan Wizard, klik kanan file DTD Inventory_Inventory lalu pilih SAX Dokumen
Handler Wizard dari menu konteks. Frame wizard 1 dari 4 menentukan API versi untuk digunakan
dalam menghasilkan kode. Sebagai contoh, pilih JAXP 1.1, bukan JAXP 1.0. Pilih SAX 2.0, bukan 1.0.
Centang kotak Propogate SAX Events to Generated Handler. Bingkai 2 memungkinkan Anda untuk
menyesuaikan penanganan setiap elemen. Terima default karena tidak ada penanganan khusus
diperlukan. Frame 3 memungkinkan Anda menentukan metode konverter jika data yang diekstraksi
memerlukan a konversi format. Terima default karena tidak diperlukan konversi. Frame 4
memungkinkan Anda untuk tentukan Nama File keluaran. Terima default untuk nama file, tetapi
hapus centang pada kotak centang Save Customized Bindings. Saat wizard selesai, tiga file Java akan
dibuat:

 Inventory_InventoryHandler.java: kelas abstrak yang mendeklarasikan metode callback


untuk menangani elemen di Inventory.xm
 Inventory_InventoryHandlerImpl.java: penerapan metode panggilan balik
 Inventory_InventoryParser.java: logika untuk memanggil metode parser SAX dan kemudian
memanggil handler metode untuk memproses data parse

Setelah file dibuat, dialog Confirm Changes akan muncul untuk merekomendasikan perubahan di
kelas implementasi untuk mengimplementasikan metode abstrak. Periksa Perform synchronization
without confirmation pada tombol radio konfirmasi dan klik Proces All.

Sekarang kami memiliki beberapa sumber untuk dikerjakan, kami perlu membuat beberapa
tambahan. Pertama, tambahkan utama ke classType parser atau rekatkan Contoh 5 ke
Inventory_InventoryParser.java.

Contoh 5. Metode utama untuk Inventory_InventoryParserl

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
public static void main(String[ ] args) throws Exception {
Inventory_InventoryHandler handler =
new Inventory_InventoryHandlerImpl();
EntityResolver resolver = null;
Inventory_InventoryParser parser =
new Inventory_InventoryParser(handler, resolver);
InputSource input = new InputSource(args[0]);
parser.parse(input);
}

Yang kita butuhkan sekarang adalah beberapa logika cetak di kelas handler. Kami akan meningkatkan
beberapa panggilan balik metode di Inventory_InventoryHandlerImpl.java untuk menangani data
yang diurai. Ganti metode karakter di Inventory_InventoryHandlerImpl.java dengan Contoh 6.

Contoh 6. metode karakter untuk Inventory_InventoryHandlerImpl

public void characters(char[ ] values, int param, int param2)


throws org.xml.sax.SAXException {
System.out.println(" Element Data: " +
new String(values, param, param2));
}

Ganti metode startElement di Inventory_InventoryHandlerImpl.java dengan Contoh 7. Itu semua


perubahan sumber yang kita butuhkan. Klik kanan paket, dan pilih Build All dari menu konteks untuk
mengkompilasi kelas.

Contoh 7. metode startElement untuk Inventory_InventoryHandlerImpl

public void startElement(String str, String str1, String str2,


org.xml.sax.Attributes attributes) throws
org.xml.sax.SAXException {
System.out.println("Element: " + str2);
for (int i=0; i<attributes.getLength(); i++){
String name = attributes.getQName(i);
String value = attributes.getValue(i);
System.out.println(" Attribute: " + name + " = " + value);
}
}

Satu langkah lagi, konfigurasikan parameter eksekusi untuk parser, dan kita akan siap untuk
pengujian. Membuka lembar Properti untuk Inventory_InventoryParser.java. Klik tab Eksekusi.
Mengatur Properti Argument ke Inventory.xml. Aktifkan dialog Customizer untuk properti Pelaksana
dengan mengklik nilai dan kemudian tombol elipsis. Klik tab Pakar dari dialog Penyesuai untuk
membuka properti Working Directory. Setel Working Directory ke direktori yang berisi file
Inventory.xml, mungkin sama dengan direktori sumber tempat kita bekerja.

Akhirnya, kami siap untuk menguji parser SAX yang telah selesai. Klik kanan
Inventory_InventoryParser.java dan pilih Execute dari menu konteks. Jika semuanya berjalan

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
dengan baik, maka IDE akan beralih ke ruang kerja Running, membuka Jendela Keluaran, dan
menampilkan hasilnya ditunjukkan pada Contoh 8.

Contoh 8. Keluaran dari Inventory_InventoryHandlerImpl


Element: Inventory
Attribute: Description = Kit Inventory
Element: Kit
Attribute: Description = The first kit
Element: Part
Attribute: Description = Part A
Element Data: Part A in Kit
Element: Supplier
Attribute: Description = Our favorite supplier
Element: Part
Attribute: Description = Part A
Element Data: Part A in Supplier
Element: Part
Attribute: Description = Part A
Attribute: Size = Just right
Attribute: Color = Purple
Element Data: Part A alone

1.5.2 Membuat DOM Tree Scanner

Dan di sini kita memiliki proses untuk membuat Pemindai Pohon Model Objek Dokumen (DOM)
dasar. Seperti SAX Document Handler di atas, ini akan mencantumkan atribut dan teks di
Inventory.xml kita dokumen. Tapi itu juga akan membuat perubahan kecil pada nilai atribut untuk
membuktikan bahwa outputnya adalah tidak persis sama dengan input. Pemindai Pohon DOM kami
akan mengubah input dengan menambahkan a singkatan kode untuk setiap nama atribut yang
memenuhi syarat untuk nilai atribut. Akhirnya, DOM kami Pemindai Pohon akan menampilkan data
XML yang menunjukkan nilai atribut yang dimodifikasi.

Kita akan mulai, seperti SAX Document Handler, dengan membuat sumber, menambahkan beberapa
kode untuk menampilkan data input, dan menjalankan tes untuk memverifikasi hasilnya. Kemudian,
kami akan membuat kode untuk output nilai atribut dan menampilkan dokumen XML yang
dimodifikasi. Outputnya akan sama format sebagai input tetapi dengan data yang sedikit berbeda.

Untuk menghasilkan sumber, klik kanan file DTD Inventory_Inventory lalu pilih and then select
Generate DOM Tree Scanner dari menu konteks. Terima nama default Inventory_InventoryScanner.
Tambahkan main metode. Ketik atau rekatkan Contoh 9 ke dalam Inventory_InventoryScanner.java.
Kode ini diadaptasi dari contoh di komentar dekat bagian atas sumber yang dihasilkan, tepat setelah
pernyataan package. Perhatikan bahwa komentar serupa ditaburkan di seluruh sumber, contoh
kode yang dapat dihapus komentarnya untuk mendapatkan akses data diuraikan dari masukan XML.

Contoh 9. metode utama untuk Inventory_InventoryScanner

public static void main(String[ ] args) throws Exception {


javax.xml.parsers.DocumentBuilderFactory builderFactory =

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
javax.xml.parsers.DocumentBuilderFactory.newInstance();
javax.xml.parsers.DocumentBuilder builder =
builderFactory.newDocumentBuilder();
org.w3c.dom.Document document =
builder.parse (new org.xml.sax.InputSource (args[0]));
Inventory_InventoryScanner scanner =
new Inventory_InventoryScanner (document);
scanner.visitDocument();
}

Sumber yang dihasilkan menyertakan metode untuk memproses setiap elemen dalam dokumen
XML, dan setiap metode menyertakan logika untuk memproses atribut elemen. Setiap metode
berbeda, tetapi semuanya memiliki struktur yang mirip dengan visitElement_Part yang ditunjukkan
pada Tabel 1. Kami akan menambah sumber yang dihasilkan seperti yang diinstruksikan dalam teks
dan tabel berikut.

Kita perlu menambahkan logika untuk mencetak nama setiap elemen. Cari sumber untuk
kemunculan baris komentar berikut. Baris ini adalah salah satu komentar yang tersebar di seluruh
sumber yang menunjukkan cara mengakses data yang diurai dari input XML.

// elemen.getValue();

Tambahkan pernyataan cetak yang ditunjukkan pada Tabel 1 tepat setelah baris komentar yang
ditemukan. Atau ganti baris yang dikomentari dengan pernyataan baru, jika Anda mau.

Tabel 1. Mencetak nama elemen di Inventory_InventoryScanner

Kita perlu menambahkan logika untuk mencetak nama dan nilai atribut. Cari sumber untuk kejadian
baris komentar berikut. Sekali lagi, ini adalah salah satu komentar yang tersebar di seluruh sumber
yang menunjukkan cara mengakses data yang diuraikan dari input XML:

// attr.getValue();

Tambahkan pernyataan cetak yang ditunjukkan pada Tabel 11-2 tepat setelah baris komentar yang
ditemukan. Atau ganti baris yang dikomentari dengan pernyataan baru, jika Anda mau.

Tabel 2. Mencetak nilai atribut di Inventory_InventoryScanner

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
Terakhir, kita perlu menambahkan logika untuk mencetak data setiap elemen. Ini mudah dalam
contoh kita karena hanya Part Bagian yang memiliki data. Cari sumber untuk kejadian berikut ini
baris yang dikomentari:

// ((org.w3c.dom.Text)simpul).getData();

Tambahkan pernyataan cetak yang ditunjukkan pada Tabel 3 tepat setelah baris komentar yang
ditemukan. Atau ganti baris yang dikomentari dengan pernyataan baru, jika Anda mau.

Tabel 3. Mencetak data elemen di Inventory_InventoryScanner

Sekarang, konfigurasikan parameter eksekusi untuk pemindai, seperti yang Anda lakukan di bagian
sebelumnya untuk pengurai. Buka lembar Properti untuk Inventory_InventoryScanner.java, klik tab
Eksekusi, dan atur properti Arguments ke Inventory.xml. Aktifkan dialog Penyesuai untuk Pelaksana
properti dengan mengklik nilainya lalu tombol ..., klik tab Pakar dari dialog Penyesuai untuk
mengekspos properti Working Directory, dan atur Working Directory ke direktori itu berisi
Inventory.xml, sama seperti direktori sumber. Saatnya untuk menguji. Kompilasi dan eksekusi
Inventory_InventoryScanner. Hasilnya harus sesuai dengan Contoh 8.

Selanjutnya, tambahkan kode untuk membuat sedikit modifikasi pada nilai data, cukup untuk
membuktikannya berbeda ketika XML baru dihasilkan nanti. Temukan pernyataan yang Anda
tambahkan untuk mencetak nilai atribut. Sebelum setiap pernyataan yang Anda temukan,
tambahkan pernyataan baru untuk mengubah nilainya dari data. Kami ingin membuktikan bahwa
data diubah ketika itu output lagi nanti. Menambahkan pernyataan yang memanggil attr.setValue
seperti yang ditunjukkan pada Tabel 3. Misalnya, untuk melihat apa visitElement_Part terlihat
seperti dengan semua perubahan, lihat Tabel 4.
Tabel 4. Memodifikasi nilai atribut di Inventory_InventoryScanner

Menjelang akhir metode visitElement_Part temukan pernyataan yang mencetak nilai data dalam
simpul Bagian. Sebelum pernyataan cetak, tambahkan pernyataan yang memanggil node.setData ke
mengubah data teks, seperti yang ditunjukkan pada Contoh 10. Seluruh metode diberikan untuk
menampilkan semua yang ditambahkan kode dalam konteks.

Contoh 10. Metode visitElement_Part dengan semua perubahan diterapkan

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
/** Scan through org.w3c.dom.Element named Part. */

void visitElement_Part(org.w3c.dom.Element element) { // <Part>


// element.getValue();
System.out.println("Element: Part");
org.w3c.dom.NamedNodeMap attrs = element.getAttributes();
for (int i = 0; i < attrs.getLength(); i++) {
org.w3c.dom.Attr attr = (org.w3c.dom.Attr)attrs.item(i);
if (attr.getName().equals("Description")) { // <Part
Description="???">
// attr.getValue();
attr.setValue("PD:" + attr.getValue());
System.out.println(" Attribute: Description = " +
attr.getValue());
}
if (attr.getName().equals("Color")) { // <Part Color="???">
// attr.getValue();
attr.setValue("PC:" + attr.getValue());
System.out.println(" Attribute: Color = " + attr.getValue());
}
if (attr.getName().equals("Size")) { // <Part Size="???">
// attr.getValue();
attr.setValue("PS:" + attr.getValue());
System.out.println(" Attribute: Size = " + attr.getValue());
}
}
org.w3c.dom.NodeList nodes = element.getChildNodes();
for (int i = 0; i < nodes.getLength(); i++) {
org.w3c.dom.Node node = nodes.item(i);
switch (node.getNodeType()) {
case org.w3c.dom.Node.CDATA_SECTION_NODE:
// ((org.w3c.dom.CDATASection)node).getData();
break;
case org.w3c.dom.Node.ELEMENT_NODE:
org.w3c.dom.Element nodeElement = (org.w3c.dom.Element)node;
if (nodeElement.getTagName().equals("Inventory")) {
visitElement_Inventory(nodeElement);
}
if (nodeElement.getTagName().equals("Kit")) {
visitElement_Kit(nodeElement);
}
if (nodeElement.getTagName().equals("Part")) {
visitElement_Part(nodeElement);
}
if (nodeElement.getTagName().equals("Supplier")) {
visitElement_Supplier(nodeElement);
}
break;
case org.w3c.dom.Node.PROCESSING_INSTRUCTION_NODE:
// ((org.w3c.dom.ProcessingInstruction)node).getTarget();
// ((org.w3c.dom.ProcessingInstruction)node).getData();
break;

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
case org.w3c.dom.Node.TEXT_NODE:
// ((org.w3c.dom.Text)node).getData();
((org.w3c.dom.Text)node).setData("PT:" +
((org.w3c.dom.Text)node).getData());
System.out.println(" Element Data: " +
((org.w3c.dom.Text)node).getData());
break;
}
}
}

Kita hampir selesai. Mari luangkan waktu sejenak untuk mengkompilasi dan menguji. Output baru
harus menunjukkan milik kita modifikasi data masukan.

Terakhir, kami akan menambahkan lebih banyak kode untuk menghasilkan data XML yang
dimodifikasi. Kami akan menggunakan Transformer objek untuk menyalin dokumen dengan data
yang dimodifikasi ke aliran keluaran. Tambahkan kode ke utama sehingga cocok dengan Contoh 11.

Contoh 11. metode utama dengan semua perubahan diterapkan

public static void main(String[ ] args) throws Exception {


javax.xml.parsers.DocumentBuilderFactory builderFactory =
javax.xml.parsers.DocumentBuilderFactory.newInstance();
javax.xml.parsers.DocumentBuilder builder =
builderFactory.newDocumentBuilder();
org.w3c.dom.Document document =
builder.parse (new org.xml.sax.InputSource (args[0]));
Inventory_InventoryScanner scanner =
new Inventory_InventoryScanner (document);
scanner.visitDocument();

// Output modified Inventory.xml


TransformerFactory tranFact = TransformerFactory.newInstance();
Transformer tran = tranFact.newTransformer();
DOMSource DSource = new DOMSource(document);
StreamResult SResult = new StreamResult(System.out);
tran.transform(DSource, SResult);
}

Tambahkan pernyataan impor pada Contoh 12 setelah pernyataan paket di atas.

Contoh 12. Pernyataan impor untuk referensi Transformer

import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
Kompilasi dan eksekusi. Jendela keluaran Anda harus cocok dengan Contoh 13 (kecuali untuk
beberapa jeda baris ditambahkan untuk keterbacaan). Di bagian atas adalah data yang diekstraksi
dan kemudian dimodifikasi dari input dokumen XML. Berikutnya adalah dokumen XML baru yang
menampilkan data yang dimodifikasi.

Contoh 13. Output dari Inventory_InventoryScanner

Element: Inventory
Attribute: Description = ID:Kit Inventory
Element: Kit
Attribute: Description = KD:The first kit
Element: Part
Attribute: Description = PD:Part A
Element Data: PT:Part A in Kit
Element: Supplier
Attribute: Description = SD:Our favorite supplier
Element: Part
Attribute: Description = PD:Part A
Element Data: PT:Part A in Supplier
Element: Part
Attribute: Description = PD:Part A
Attribute: Size = PS:Just right
Attribute: Color = PC:Purple
Element Data: PT:Part A alone

<!-- Created by vaughn on May 11, 2002, 9:01 PM -->


<Inventory Description="ID:Kit Inventory">
<Kit Description="KD:The first kit">
<Part Description="PD:Part A">PT:Part A in Kit</Part>

</Kit>
<Supplier Description="SD:Our favorite supplier">
<Part Description="PD:Part A">PT:Part A in
Supplier</Part></Supplier>
<Part Description="PD:Part A" Size="PS:Just right"
Color="PC:Purple">PT:Part A alone</Part>
</Inventory>

Contoh-contoh ini memberikan dasar-dasar membaca, memodifikasi, dan menulis dokumen XML
dengan Java kelas. NetBeans memudahkan untuk mengakses dokumen XML di mana pun Anda
menemukannya atau membuatnya milik Anda kapan pun Anda perlu berbagi data dengan aplikasi
lain. Ingatlah untuk menggunakan SAX penangan dokumen jika akses baca serial memadai, terutama
saat kecepatan dan memori sangat penting. Gunakan pemindai pohon DOM jika Anda memerlukan
akses acak ke elemen data dalam dokumen XML, jika Anda perlu memperbarui data, atau jika Anda
perlu membuat dokumen baru. Penangan dokumen SAX banyak digunakan dalam aplikasi web, di
mana sumber daya terbatas. Ingatlah hal itu saat Anda berada membaca bab selanjutnya.

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672
Selesai...

NetBeans: The Definitive Guide By Tim Boudreau, Jesse Glick, Simeon Greene, Vaughn Spurlin, Jack
J. Woehr | Publisher : O'Reilly, Pub Date : October 2002, ISBN : 0-596-00280-7, Pages : 672

Anda mungkin juga menyukai