Home > Java > Membaca dan Modifikasi File XML dengan Java

Membaca dan Modifikasi File XML dengan Java


File xml banyak digunakan dalam berbagai bahasa pemrograman, termasuk Java. Struktur xml yang sederhana, mempunyai kemampuan tersendiri untuk dapat menyimpan informasi tertentu. Untuk dapat mengakses informasi tersebut, berbagai bahasa pemrograman telah lama mempunyai kemampuan untuk membaca dan memodifikasi file xml tersebut. Nah, posting ini tentang bagaimana membaca dan memodifikasi file xml dengan Java.

Misalnya kita mempunya struktur xml (MahasiswaXML.xml) disimpan pada drive D, seperti berikut:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
 Document   : MahasiswaXML.xml
 Created on : December 6, 2010, 9:04 PM
 Author     : Pizaini
 Description:
 Purpose of the document follows.
-->
<root>
 <mahasiswa id="2">
   <nama>Pizaini</nama>
   <nim>10751000309</nim>
   <email>zheiner.taurus@gmail.com</email>
  </mahasiswa>
</root>

File xml tersebut akan dimodifikasi dengan mengubah data pada elemen nama, mengubah atribut id, dan menambah childElement yaitu umur. Seperti berikut :

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
 Document   : MahasiswaXML.xml
 Created on : December 6, 2010, 9:04 PM
 Author     : Pizaini
 Description:
 Purpose of the document follows.
-->
<root>
 <mahasiswa id="4">
   <nama>Pizaini, ST</nama>
   <nim>10751000309</nim>
   <email>zheiner.taurus@gmail.com</email>
   <umur>21</umur>
</mahasiswa>
</root>

Berikut adalah source code Java untuk modifikasi file xml di atas:

/*
 * Copyright(c) 2010
 * pizaini.wordpress.com
 */

package javablogging.com.fx.xmlreader;

/**
 *
 * @author Pizaini
 */
import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class ModifyXMLFile {

 public ModifyXMLFile() {
    try{
        String filepath = "D:\\MahasiswaXML.xml";
        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
        Document doc = docBuilder.parse(filepath);

        //Root elemet
        Node root= doc.getFirstChild();

        //Mengambil elemen berdasarkan tag
        Node staff = doc.getElementsByTagName("mahasiswa").item(0);

        //Mengubah atribut id pada elemen Mahasiswa
        NamedNodeMap attr = staff.getAttributes();
        Node nodeAttr = attr.getNamedItem("id");
        nodeAttr.setTextContent("4");

        //Menambahkan elemen umur
        Element age = doc.createElement("umur");
        age.appendChild(doc.createTextNode("21"));
        staff.appendChild(age);

        NodeList list = staff.getChildNodes();

        //looping mencari nama elemen
        for (int i =0; i<list.getLength();i++){
           Node node = list.item(i);

          //jika nama node ditemukan, update value
          if("nama".equals(node.getNodeName())){
             node.setTextContent("Pizaini, ST");
          }
       }
      //Menulis data ke file xml
      TransformerFactory transformerFactory = TransformerFactory.newInstance();
      Transformer transformer = transformerFactory.newTransformer();
      DOMSource source = new DOMSource(doc);
      StreamResult result =  new StreamResult(new File(filepath));
      transformer.transform(source, result);

     }catch(ParserConfigurationException pce){
       System.out.print(pce.getMessage());
     }catch(TransformerException tfe){
       System.out.print(tfe.getMessage());
     }catch(IOException ioe){
       System.out.print(ioe.getMessage());
     }catch(SAXException sae){
       System.out.print(sae.getMessage());
    }
  }

  public static void main(String argv[]) {
    ModifyXMLFile mLFile = new ModifyXMLFile();
 }
}

Semoga bermanfaat, Amiin…………

  1. 19 September 2014 at 02:20

    gimana cara nya gan cara mengambil data di website secara otomatis menggunakan java…??

  2. 10 July 2012 at 18:10

    Makasih Gan..!! Saya nyari kemana-mana ternyata Jodoh nya disini. hhee..

    • 13 July 2012 at 16:35

      sama2 agan…semoga bermanfaat

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: