Pemahaman tentang SAX, PENGENALAN SAX
PERBEDAAN DOM DAN SAX
MENGGUNAKAN SAX
BEBERAPA CONTOH SAX PARSER
MENGGUNAKAN SAX API INTERFACE
MEMPARSING DOKUMEN XML DENGAN MENGGUNAKAN SAX API
1. BAB VI SIMPLE API FOR XML (SAX)
Riza Muhammad Nurman, S.Kom
Email : rizaman@eng.ui.ac.id ; rizamn@ymail.com
2. Sunday, April 22, 2018 Riza Muhammad Nurman 2
CONTENT
PENGENALAN SAX
PERBEDAAN DOM DAN SAX
MENGGUNAKAN SAX
BEBERAPA CONTOH SAX PARSER
MENGGUNAKAN SAX API INTERFACE
MEMPARSING DOKUMEN XML DENGAN MENGGUNAKAN SAX
API
3. Sunday, April 22, 2018 Riza Muhammad Nurman 3
Pengenalan SAX
• Simple API for XML (SAX) adalah public domain software dibuat oleh
anggota dari XML-DEV mailing list
• SAX digunakan untuk memproses dokumen XML.
• Software yang mengimplementasikan SAX untuk memproses
dokumen XML disebut SAX Parser.
• SAX cocok untuk memproses dokumen XML dengan ukuran besar
karena menggunakan memory yang lebih kecil.
4. Sunday, April 22, 2018 Riza Muhammad Nurman 4
Perbedaan DOM dan SAX
KRITERIA DOM SAX
Metode Parsing proses parsing sebuah dokumen XML
secara random
menggunakan callback untuk
event yang terjadi ketika
pemrosesan sebuah dokumen
sedang berjalan
Pengorganisasian
Informasi
komponen dari dokumen XML dibaca
sebagai struktur hierarki dalam bentuk
pohon di dalam memory internal sebuah
komputer
Permintaan atas informasi
tentang sebuah komponen dari
dokumen XML diperlakukan
sebagai sebuah event
Pengaksesan Informasi pengaksesan data ke bagian manapun di
dalam dokumen lebih mudah karena
adanya struktur tree di dalam memory
informasi dapat diakses dalam
urutan berdasarkan urutan
pemrosesannya
Kecepatan Lambat Lebih cepat
Kesulitan Dalam
Pengembangan
Mudah Sulit
Penggunaan Memory Banyak Sedikit
Navigability melakukan navigasi antara berbagai
nodes pada tree node
dokumen XML diparsing mulai
dari awal dokumen ke akhir dan
tidak mengijinkan dilakukannya
navigasi.
Kemudahan
Transformasi Dokumen
mengijinkan developer untuk
memodifikasi deokumen XML secara
langsung
tidak dapat memodifikasi sebuah
dokumen XML karena bersifat
read-only
5. Sunday, April 22, 2018 Riza Muhammad Nurman 5
Menggunakan SAX
* Cara Kerja SAX API
SAX menggunakan class dan interface yang didefinisikan dalam SAX API
untuk memproses sebuah dokumen XML dalam bentuk data stream
6. Sunday, April 22, 2018 Riza Muhammad Nurman 6
Beberapa Contoh SAX Parser
• Parser adalah sebuah program komputer atau komponen dari
program komputer yang menganalisa struktur dari input berdasarkan
format tertentu
NAMA SUMBER
BAHASA
PEMROGRAMAN
YANG DIDUKUNG
Xerces http://xml.apache.org Java, C++, Perl
MSXML 4.0
http://www.microsoft.com/downloads/details.a
spx
C++, VB
JAXP http://java.sun.com/xml/downloads/jaxp.html Java
7. Sunday, April 22, 2018 Riza Muhammad Nurman 7
Menggunakan SAX API Interface
• SAX API terdiri atas beberapa packages yang dapat digunakan untuk
memparsing sebuah dokumen XML.
• Package yang berisi interface dasar dari SAX API dikenal sebagai
org.xml.sax.
• Handler interface utama dari package ini yang mengijinkan sebuah
aplikasi untuk menerima notifikasi ketika sebuah SAX parser
memparsing sebuah dokumen XML :
– Contenthandler Interface
– Errorhandler Interface
– Dtdhandler Interface
– Entityresolver Interface
8. Sunday, April 22, 2018 Riza Muhammad Nurman 8
CONTENTHANDLER INTERFACE
• ContentHandler interface menyediakan berbagai macam fungsi yang
dipanggil ketika sebuah SAX Parser memparsing XML dokumen
• setDocumentLocator()
• Method ini menggunakan object dari class Locator untuk mengambil
lokasi dimana sebuah event terjadi di dalam dokumen XML
public void setDocumentLocator(Locator locator)
{
System.out.println(“The setDocumentLocator is called”);
this.locator=locator
}
9. Sunday, April 22, 2018 Riza Muhammad Nurman 9
CONTENTHANDLER INTERFACE - II
• startDocument()
• Method ini dipanggil hanya satu kali dan menandai awal dari proses
parsing
• endDocument()
• Method ini dipanggil hanya satu kali dan menandai akhir dari proses
parsing
public void startDocument() throws SAXException
{
System.out.println(“Parsing Document Begins”);
}
public void endDocument() throws SAXException
{
System.out.println(“Parsing Document Ends”);
}
10. Sunday, April 22, 2018 Riza Muhammad Nurman 10
CONTENTHANDLER INTERFACE - III
• startElement()
• Method ini dipanggil ketika parser menemukan tag pembuka dari sebuah
elemen
• Method ini menggunakan beberapa komponen sebagai parameter, yaitu:
– Nama dari elemen
– Atribut dari elemen
– Namespace URI
public void startElement(String namespace, String local_name, String
full_name, Attributes attributes) throws SAXException {
System.out.println(“Start Element Method Calling”);
System.out.println(“n Name Of the start element” + local_name);
if(!namespace.equals(“”)) {
System.out.println(“The element is in this namespace” +
full_name);
}
for (int c=0;c<attributes.getLength();c++) {
System.out.println(“n Attribute name: “+
attributes.getLocalName[c]);
}
}
11. Sunday, April 22, 2018 Riza Muhammad Nurman 11
CONTENTHANDLER INTERFACE - IV
• endElement()
• Method ini dipanggil ketika parser menemukan tag penutup dari sebuah
elemen
• characters()
• Method ini dipanggil ketika parser menemukan data karakter di dalam
elemen
public void endElement(String namespaceURI, String sName,
String qName) throws SAXException {
…………
}
public void characters(char buf[], int offset, int
len)throws SAXException {
…………
}
12. Sunday, April 22, 2018 Riza Muhammad Nurman 12
ERRORHANDLER INTERFACE
• Interface ErrorHandler mendefinisikan berbagai macam fungsi yang
digunakan untuk menangani error yang mungkin terjadi pada saat
proses parsing berjalan
Berbagai method yang dimiliki oleh ErrorHandler interface adalah:
• warning()
• error()
• fatalError()
13. Sunday, April 22, 2018 Riza Muhammad Nurman 13
DTDHANDLER INTERFACE
• DTDHandler Interface mendefinisikan method untuk menangani
event yang terjadi ketika parser memproses DTD dari sebuah XML.
• Method ini mengidentifikasi deklarasi untuk entitas-entitas yang
ditandai sebagai notations, seperti file grafik dan image.
• Berbagai method yang dimiliki oleh interface ini adalah:
• notationDecl()
Menerima notifikasi tentang entity yang dideklarasikan sebagai
notation.
• unparsedEntityDecl()
Menerima notifikasi tentang entity dari dokumen XML yang
tidak dapat diparsing.
14. Sunday, April 22, 2018 Riza Muhammad Nurman 14
ENTITYRESOLVER INTERFACE
• Interface ini mendefinisikan method untuk menangani entity eksternal
selama prose parsing berjalan.
• Method yang didefinisikan pada interface ini : resolveEntity()
• resolveEntity() menerjemahkan sebuah entitas eksternal dari
sebuah dokumen XML.
15. Sunday, April 22, 2018 Riza Muhammad Nurman 15
MEMPARSING DOKUMEN XML DENGAN
MENGGUNAKAN SAX API