Arsip untuk Mei 9th, 2008|Halaman arsip harian
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…
- Setelah itu, saatnya untuk membuat dialog untuk membaca file XML. Tambahkan dulu library2 berikut pada kelas yang anda pakai :
- Tambahkan atribut berikut di kelas anda.
- Lihat File xml, untuk distandarkan buat dibaca… kalo punya gw kemaren strukturnya seperti ini - Setelah itu, tambahkan method berikut di kelas 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;
}
}
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;
private String fileXML;
private Document dokumenInput;
<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>
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);
}
}
Horee… internet..
Hahaha… setelah sekian lama ditunggu, akhirnya langganan speedy juga.. wah kalo unlimited gini bakalan sering ngepost nih..
Komentar (5)

Tinggalkan sebuah Komentar



