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.
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:
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:
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
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.
Setelah kita mendapatkan list of Employee beans, yang proses selanjutnya adalah mencetak data-data didalam list ke output.
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
<?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:
- Buka File XML
- Parse XML
- Petakan hasil parse kedalam beans
- tampilkan beans
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 eachelement 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 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)); } John
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
http://vtd-xml.sf.net
Coba liat E4X (Ecmascript for XML) dah, tu baru parsing/creating XML paling mantap... sayang blm nemu penerapannya di Java :((