Rabu, 11 Februari 2009

XML Parsing Pada J2ME Menggunakan kXML2

XML Parsing Pada J2ME Menggunakan kXML2
Robertus Lilik Haryanto
lilik.haryanto@gmail.com
http://secangkirkopipanas.com
Lisensi Dokumen:
Copyright © 2003-2007 IlmuKomputer.Com
Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com.
XML merupakan salah satu cara merepresentasikan data yang terstruktur yang berbasis teks. Banyak aplikasi termasuk aplikasi pada mobile phone yang menggunakan XML untuk pertukaran data. Untuk dapat membaca data yang terdapat pada dokumen XML, aplikasi harus melakukan parsing pada dokumen XML yang akan digunakan.
Pendahuluan
Terdapat banyak cara untuk parsing dokumen XML pada aplikasi J2ME, antara lain menggunakan NanoXML, TinyXML, kXML, dll. Pada artikel ini, saya akan memberikan contoh cara mem-parsing dokumen XML menggunakan kXML versi 2, dimana dokumen XML yang akan di-parsing diperoleh secara online pada jaringan Internet. Tapi aplikasi di bawah ini hanya merupakan simulasi, sehingga menggunakan Web Server lokal saja, dalam hal ini saya menggunakan Apache Web Server.
kXML merupakan salah satu XML parser berbasis common XML pull API yang secara khusus dirancang untuk digunakan pada lingkungan Java Applets, Personal Java, atau Midlet Java. XML parsing yang berbasis pull ini, merupakan kombinasi dari beberapa keunggulan dari SAX (Simple API for XML) dan DOM (Document Object Model). Anda bisa memperoleh kXML melalui situs http://kxml.sourceforge.net.
Isi
Berikut merupakan contoh dokumen XML yang akan di-parse yang disimpan pada Web Server.
skripsi.xml



Fransiska Krisni Defianti
Jl. Mantrijeron MJ III No. 902 Yogyakarta
XML Web Sevice for Mobile Phone Using .NET Platform and Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
1
J2ME



Robertus Lilik Haryanto
Jl. Paingan II No. 123 A Krodan Maguwoharjo Depok Sleman Yogyakarta
Positioning System for Active Mobile Phone


Berikut merupakan contoh aplikasi J2ME (XMLParsing.java) yang akan melakukan parsing dokumen XML di atas:
XMLParsing.java
/*
* XmlParsing.java
*
* Created on June 27, 2007, 9:32 PM
*/
package org.secangkirkopipanas.xml;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;
import org.kxml2.io.*;
import org.xmlpull.v1.*;
/**
*
* @author lilik.haryanto
* @version 1.0
*/
public class XmlParsing extends MIDlet implements CommandListener {
private Display display;
private Form main;
private StringItem siNim[];
private StringItem siNama[];
private StringItem siAlamat[];
private StringItem siJudul[];
private Command cmdExit;
private KXmlParser parser;
private int jumlah = 0;
public XmlParsing() {
display = Display.getDisplay(this);
main = new Form("Data Skripsi Mahasiswa");
siNim = new StringItem[10];
siNama = new StringItem[10];
siAlamat = new StringItem[10];
siJudul = new StringItem[10];
cmdExit = new Command("Exit", Command.EXIT, 0);
}
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
2
public void startApp() {
getXMLDocument();
main.addCommand(cmdExit);
main.setCommandListener(this);
display.setCurrent(main);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d) {
if (c == cmdExit) {
destroyApp(true);
}
}
public void getXMLDocument() {
HttpConnection conn;
DataInputStream dis;
DataOutputStream dos;
try {
conn = (HttpConnection) Connector.open(
"http://localhost:8081/xml/skripsi.xml");
conn.setRequestMethod(HttpConnection.GET);
conn.setRequestProperty("Content-Type", "text/xml");
dos = new DataOutputStream(conn.openDataOutputStream());
/**
* Proses untuk membuka koneksi dengan server untuk
* mengambil response dari server
*/
dis = new DataInputStream(conn.openDataInputStream());
if (conn.getResponseCode() == HttpConnection.HTTP_OK) {
/** Mengambil data XML dari server */
doParse(dis);
for (int i = 0; i < jumlah; i++) {
main.append(siNim[i]);
main.append(siNama[i]);
main.append(siAlamat[i]);
main.append(siJudul[i]);
main.append("---");
}
} else {
/** Koneksi Error */
main.append("Koneksi Error");
}
} catch (Exception e) {
/** Error */
main.append("Error: " + e);
}
} Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
3
public void doParse(InputStream isxml) {
parser = new KXmlParser();
try {
parser.setInput(new InputStreamReader(isxml));
parser.next();
parser.require(XmlPullParser.START_TAG, null, "teknik-informatika");
while (parser.nextTag() != XmlPullParser.END_TAG) {
parser.require(XmlPullParser.START_TAG, null, "mahasiswa");
siNim[jumlah] = new StringItem("NIM: ",
parser.getAttributeValue(0));
while (parser.nextTag() != XmlPullParser.END_TAG) {
parser.require(XmlPullParser.START_TAG, null, "nama");
siNama[jumlah] = new StringItem("Nama: ",
parser.nextText());
parser.require(XmlPullParser.END_TAG, null, "nama");
parser.nextTag();
parser.require(XmlPullParser.START_TAG, null, "alamat");
siAlamat[jumlah] = new StringItem("Alamat: ",
parser.nextText());
parser.require(XmlPullParser.END_TAG, null, "alamat");
parser.nextTag();
parser.require(XmlPullParser.START_TAG, null, "judul");
siJudul[jumlah] = new StringItem("Judul: ",
parser.nextText());
parser.require(XmlPullParser.END_TAG, null, "judul");
}
parser.require(XmlPullParser.END_TAG, null, "mahasiswa");
jumlah++;
}
parser.require(XmlPullParser.END_TAG, null, "teknik-informatika");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
4
OUTPUT
Gambar 1. Hasil parsing dokumen XML pada aplikasi J2ME menggunakan emulator
Penutup
Aplikasi J2ME di atas dapat dimodifikasi sesuai dengan dokumen XML yang akan di-parsing. Saat ini dokumen XML sudah banyak digunakan terutama pada teknologi Web Service yang sudah berkembang pesat. Selamat mencoba!
Referensi
1. http://kxml.sourceforge.net
2. kXML2 Documentation
Biografi Penulis
Robertus Lilik Haryanto. Lahir di Klaten, 2 Oktober 1983. Menyelesaikan pendidikan program S1 pada program studi Teknik Informatika Universitas Sanata Dharma (USD), Yogyakarta pada bulan Agustus 2005. Pernah bekerja di sebuah perusahaan penyedia layanan web hosting, PT. Inter Lintas Media Yogyakarta sebagai web programmer. Selain itu, pernah mengajar pelatihan Java dan Delphi di Gama Learning Center (GLC), Yogyakarta. Saat ini bekerja sebagai developer di PT. Jati Piranti Solusindo (Ecom), Jakarta, sejak tahun 2005.
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
5
Menggeluti dunia pemrograman sejak tahun 1999 dan bahasa pemrograman yang paling digemari adalah Java (J2SE, J2ME, dan J2EE), C++, Microsoft C#.NET dan PHP. Selain melakukan beberapa penelitian, juga sedang mendalami beberapa bahasa pemrograman di atas.
Komunitas eLearning IlmuKomputer.Com
Copyright © 2003-2007 IlmuKomputer.Com
6

1 komentar:

  1. saya errornya di "private KXmlParser parser;"

    katnya class not found. itu solusinya gmna ya?

    emailkan ke emailku y mazz di poenxwidianto@gmail.co

    BalasHapus