Skip to main content

XML Parsing Dengan Java Bag. I (Menggunakan DOM Parser)

Dulu sewaktu kuliah saya pernah pernah berpikir untuk membuat suatu applikasi yang dapat membaca dan menulis file configurasinya sendiri. lalu saya menggunakan text file sebagai media penyimpan konfigurasi.... seiring perkembangan dan jam terbang bertambah sayapun sempat terpikir untuk mengganti text file yang digunakan menjadi XML (Extensible Markup Language) dimana dokumen ini memiliki keunggulan yang sangat banyak. tidak hanya sebagai media penyimpanan konfigurasi, ternyata XML juga banyak digunakan sebagai media penyimpanan data. seperti contoh berikut ini.


<?xml version="1.0" encoding="UTF-8"?>
<personnel>
  <employee type="permanent">
        <name>Seagull</name>
        <id>3674</id>
        <age>34</age>
   </employee>
  <employee type="contract">
        <name>Robin</name>
        <id>3675</id>
        <age>25</age>
    </employee>
  <employee type="permanent">
        <name>Crow</name>
        <id>3676</id>
        <age>28</age>
    </employee>
</personnel>

Dokumen XML diatas menjabarkan tentang struktur data kepegawaian. lalu apa kegunaannya pada aplikasi? dan bagaimana caranya?

Oke, pada posting saya berikut ini kita akan membuat suatu aplikasi yang memiliki fungsi untuk membaca(parse) data-data tersebut kedalam applikasi.

Kira-kira output dari applikasi ini adalah:

Employee Details - Name:Seagull, Type:permanent, Id:3674, Age:34.
Employee Details - Name:Robin, Type:contract, Id:3675, Age:25.
Employee Details - Name:Crow, Type:permanent, Id:3676, Age:28.

Ada 2 cara dalam membaca dokumen XML, 1) Menggunakan DOM(Document Object Modeling) Parser, 2) Menggunakan SAX (Simple API for XML). Pada posting kali ini kita akan mencoba menggunakan DOM Parser.

Ada beberapa langkah yang harus dilakukan:
  1. Buka File XML
  2. Parse XML
  3. Petakan hasil parse kedalam beans
  4. tampilkan beans
berikut cara membuka file XML kedalam bentuk Object

private void parseXmlFile(){
  //get the factory
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

  try {

   //Using factory get an instance of document builder
   DocumentBuilder db = dbf.newDocumentBuilder();

   //parse using builder to get DOM representation of the XML file
   dom = db.parse("employees.xml");


  }catch(ParserConfigurationException pce) {
   pce.printStackTrace();
  }catch(SAXException se) {
   se.printStackTrace();
  }catch(IOException ioe) {
   ioe.printStackTrace();
  }
 }

Setelah object dari dokumen XML telah dibuka maka tahap selanjutnya adalah membuat function untuk memparsing object dari dokumen XML tadi. berikut adalah function untuk mem-parsing Object document XML

private void parseDocument(){
  //get the root element
  Element docEle = dom.getDocumentElement();

  //get a nodelist of 
 elements
  NodeList nl = docEle.getElementsByTagName("Employee");
  if(nl != null && nl.getLength() > 0) {
   for(int i = 0 ; i < nl.getLength();i++) {

    //get the employee element
    Element el = (Element)nl.item(i);

    //get the Employee object
    Employee e = getEmployee(el);

    //add it to list
    myEmpls.add(e);
   }
  }
 }

dalam proses parsing diatas kita akan menemukan elemen-elemen file XML yang kemudian elemen-elemen tersebut akan kita petakan kedalam sebuah atau sekumpulan dari bean, sebut saja Employee beans. berikut adalah function untuk memetakan elemen-elemen dari dokumen XML kedalam Employee beans.

private Employee getEmployee(Element empEl) {

  //for each  element get text or int values of
  //name ,id, age and name
  String name = getTextValue(empEl,"Name");
  int id = getIntValue(empEl,"Id");
  int age = getIntValue(empEl,"Age");

  String type = empEl.getAttribute("type");

  //Create a new Employee with the value read from the xml nodes
  Employee e = new Employee(name,id,age,type);

  return e;
 }


 /**
  * I take a xml element and the tag name, look for the tag and get
  * the text content
  * i.e for John xml snippet if
  * the Element points to employee node and tagName is 'name' I will return John
  */
 private String getTextValue(Element ele, String tagName) {
  String textVal = null;
  NodeList nl = ele.getElementsByTagName(tagName);
  if(nl != null && nl.getLength() > 0) {
   Element el = (Element)nl.item(0);
   textVal = el.getFirstChild().getNodeValue();
  }

  return textVal;
 }


 /**
  * Calls getTextValue and returns a int value
  */
 private int getIntValue(Element ele, String tagName) {
  //in production application you would catch the exception
  return Integer.parseInt(getTextValue(ele,tagName));
 }

Setelah kita mendapatkan list of Employee beans, yang proses selanjutnya adalah mencetak data-data didalam list ke output.

private void printData(){

  System.out.println("No of Employees '" + myEmpls.size() + "'.");

  Iterator it = myEmpls.iterator();
  while(it.hasNext()) {
   System.out.println(it.next().toString());
  }
 }


Selesai sudah kita membaca(parse) sebuah dokumen XML dengan mengunakan DOM Parser. untuk teknik pembacaan dokumen XML menggunakan SAX akan dibahas pada posting selanjutnya.

source

Comments

Anonymous said…
Another XML parser is called vtd-xml, it is better than DOM and SAX

http://vtd-xml.sf.net
shido said…
thank you... next time i'll review it.. btw... thanks for visiting...
HERLoct_HENT said…
@_@ tu cara paling normal buat parsing XML di Java aniki??? walah, ribet...

Coba liat E4X (Ecmascript for XML) dah, tu baru parsing/creating XML paling mantap... sayang blm nemu penerapannya di Java :((
shido said…
ECMA itu standar bahasa ala javascript/actionscript bukan? dia mah ECMAscript itu rata-rata client base bro, di alamat ini http://vtd-xml.sf.net ada parser xml mudah

Popular posts from this blog

Mengapa Karyawan Meninggalkan Perusahaan!

Mengapa karyawan meningggalkan perusahaan (atau paling tidak sering ngedumel)? Berikut ini petikan dari bukunya Haris Priyatna yang berjudul Azim Premji, "Bill Gates" dari India (terbitan Mizania 2007). Azim Premji adalah milyuner dari India yang telah menyulap Wipro, dari sebuah perusahaan minyak goreng menjadi konglomerasi perusahaan dengan salah satunya adalah Wipro Technologies yang merupakan ikon kebangkitan industri teknologi informasi di India. Dia urutan ke-21 orang terkaya di dunia versi Forbes 2007. Azim dikenal sebagai milyuner yang bergaya hidup sederhana. Berikut ini pandangan Premji tentang mengapa karyawan betah dan tidak betah dengan perusahaan. Wipro sendiri memiliki tinkat turn-over (kepindahan) karyawan yang sangat rendah, padahal gajinya tidak lebih tinggi dibandingkan perusahaan sejenis seperti Infosys dan TCS. Mengapa KARYAWAN meninggalkan perusahaan? Banyak perusahaan yang mengalami persoalan tingginya tingkat pergantian karyawan. Betapa or...

Ubuntu 9.04 x86_64 Run well in Acer Aspire 4530

Hey guys, after a while I didn't update this blog, right now I'm just feeling like to share my happiness. Just want to inform you all that ubuntu 9.04 64bit run well in my laptop... i'm just happy to say to my self welcome back to ubuntu after a while back to windows because ubuntu version lesser than 9.04 doesn't support my laptop. the installation process is simple, much more simple than before. to install ubuntu 9.04 please follow this steps: insert ubutu 9.04 live CD or the alternate version of it set your optical drive as your first boot device at BIOS or press F12 at boot sequence to select which device you want to boot from. select install ubuntu to harddrive wait until boot process done and setup your storage partition (at least 1 ext3/ext4 partition and 1 swap partition fill your name, user name and password. wait until installation progress finished. reboot you laptop now. VIOLA! your ubuntu now ready to use okay let's check so...