Arsip ‘connection java xml’ Tag

Koneksi Java – XML via JDOM

Nah ini gw oprek pas TA kemaren, tapi baru sempet publikasi sekarang. Waktu itu cari cara gimana supaya gw bisa koneksi ke XML pake Java. Nah dapet beberapa referensi dari internet, ternyata bisa pake parser yang namanya JDOM. Parser JDOM bisa di download di sini:

Agak repot memang, habis download kita masih harus install file library, kemudian baru bikin interface buat baca file xmlnya, tapi ada baiknya dicoba duluJ

Setelah download JDOM, import file JDOM itu ke Library. Cara importnya (melalui Netbeans) begini:

- Masuk ke propertiesnya project, seperti gambar dibawah:

Setelah masuk properties, pilih Category Libraries, kemudian pada tab Compile, tekan tombol Add Library

- Pilih Manage Libraries, kemudian pada Library Manager Tab Classpath, tekan tombol Add.

- Nah, tinggal pilih lokasi tempat JDOM tadi disimpan, setelah itu JDOM sudah bisa digunakan

- Sekarang buat kelas bernama FilterFileXML, dan masukkan ke dalam project anda…


import java.io.File;
import java.util.Hashtable;
import javax.swing.filechooser.FileFilter;

public class FilterFileXML extends FileFilter{
/** @author  : Fajar Saptono
 *
 */
     private static String HIDDEN_FILE = "Hidden File";
     private Hashtable saringan = null;

     public SaringBerkasXML(){
         this.saringan = new Hashtable();
         this.saringan.put("xml",this);
     }

    public boolean accept(File f) {
        if(f != null) {
            if(f.isDirectory()) {
                return true;
            }

            String ekstensi = getEkstensi(f);
            if(ekstensi != null && this.saringan.get(getEkstensi(f)) != null) {
                return true;
            };
        }
        return false;
    }

    public static String getEkstensi(File f) {
        String ext = null;
        String s = f.getName();
        int i = s.lastIndexOf('.');
        if (i > 0 && i < s.length() - 1) {
            ext = s.substring(i+1).toLowerCase();
        }
        return ext;
    }

    public String getDescription() {
        return null;
    }
}

- Setelah itu, saatnya untuk membuat dialog untuk membaca file XML. Tambahkan dulu library2 berikut pada kelas yang anda pakai :

import java.io.File;
import java.io.IOException;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

- Tambahkan atribut berikut di kelas anda.

private String fileXML;
private Document dokumenInput;

- Lihat File xml, untuk distandarkan buat dibaca… kalo punya gw kemaren strukturnya seperti ini

<graf>
    <sisi>
        <sisinya>
            <id>e1</id>
            <bobot>90</bobot>
            <koneksi>Dalu-Dalu(1)</koneksi>
            <koneksi>Ujung Batu(2)</koneksi>
        </sisinya>
    <simpul>
        <simpulnya>
            <id>DaluDalu(1)</id>
<posisi-x>2</posisi-x>
<posisi-y>5</posisi-y>
        </simpulnya>
    </simpul>
</graf>

- Setelah itu, tambahkan method berikut di kelas anda.

private void bacaFileXML () throws JDOMException, IOException {
    SAXBuilder builder = new SAXBuilder();
    this. dokumenInput = builder.build(new File(this.fileXML));
    /*Kalo kemaren TA gw tentang Shortest Path, jadi ada sisi dan simpul..   
    * Nah yang ini bisa dikembangkan sendiri, tergantung dengan kasus anda
   */
    this.sisi = new Hashtable<String, Sisi>();
    this.simpul = new Hashtable<String, Simpul>();
    Element root = this.inputDocument.getRootElement();
    Element sisixml = root.getChild("sisi");
    List sisixml1 = sisixml.getChildren("sisinya");
    Element simpulxml = root.getChild("simpul");
    List simpulxml1 = simpulxml.getChildren("simpulnya");

    for(int i=0; i<simpulxml1.size();i++){
        Elemen simpulSkr = (Elemen)simpulxml1.get(i);
        String idSimpul = simpulSkr.getChild("id").getValue();
        int x = this.delta_x + Integer.parseInt(simpulSkr.getChild("posisi-x").getValue()) * this.zoom;
        int y = this.delta_y + Integer.parseInt(simpulSkr.getChild("posisi-y").getValue()) * this.zoom;
        this.max_x = Math.max(x, this.max_x);
        this.max_y = Math.max(y,this.max_y);
        this.simpul.put(idSimpul,new Simpul(idSimpul,x,y,(int)(this.zoom*0.5),this));
    }

    for(int i= 0; i<sisixml1.size();i++){
        Elemen sisiSkr = (Elemen)sisixml1.get(i);
        String idSisi = sisiSkr.getChild("id").getValue();
        int bobot = Integer.parseInt(sisiSkr.getChild("bobot").getValue());
        List koneksiSisi = sisiSkr.getChildren("koneksi");
        String v1 = ((Elemen)koneksiSisi.get(0)).getValue();
        String v2 = ((Elemen)koneksiSisi.get(1)).getValue();
        Simpul simpul1 = this.getSimpul(v1);
        Simpul simpul2 = this.getSimpul(v2);

        Sisi sisi = new Sisi(idSisi,bobot,simpul1,simpul2,(this.zoom/4));
        simpul1.tambahSisi(sisi);
        simpul2.tambahSisi(sisi);

        this.sisi.put(idSisi,sisi);
    }
}