Beranda > Java Programming > serialize objects to XML is easy with xstream

serialize objects to XML is easy with xstream

public bingung cara parsing dari object sebuah class ke XML?

sebenarnya gampang gunakan aja library yang namanya JAXB, tapi sayang penggunaannya agak ribet :D

tapi tenang, sekarang untuk parsing dari sebuah object ke file XML lebih gampang!!

gak percaya?

kalo gak percaya silahkan download aja framework yang namanya XStream dan coba rasakan kemudahannya seperti pada artikel ini :D

sebelumnya kita buat dulu 2 buah class yang bernama Address dan Person seperti dibawah ini :

Address :

package com.nohnit.xtream;

public class Address {

    private String street;

    private String city;

    private String country;

    private String postalCode;

    public Address() {
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getPostalCode() {
        return postalCode;
    }

    public void setPostalCode(String postalCode) {
        this.postalCode = postalCode;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Address other = (Address) obj;
        if ((this.street == null) ? (other.street != null) : !this.street.equals(other.street)) {
            return false;
        }
        if ((this.city == null) ? (other.city != null) : !this.city.equals(other.city)) {
            return false;
        }
        if ((this.country == null) ? (other.country != null) : !this.country.equals(other.country)) {
            return false;
        }
        if ((this.postalCode == null) ? (other.postalCode != null) : !this.postalCode.equals(other.postalCode)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 67 * hash + (this.street != null ? this.street.hashCode() : 0);
        hash = 67 * hash + (this.city != null ? this.city.hashCode() : 0);
        hash = 67 * hash + (this.country != null ? this.country.hashCode() : 0);
        hash = 67 * hash + (this.postalCode != null ? this.postalCode.hashCode() : 0);
        return hash;
    }
}

Person :

package com.nohnit.xtream;

public class Person {

    private int id;

    private String name;

    private Address address;

    public Person() {
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Person other = (Person) obj;
        if (this.id != other.id) {
            return false;
        }
        if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
            return false;
        }
        if (this.address != other.address && (this.address == null || !this.address.equals(other.address))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 19 * hash + this.id;
        hash = 19 * hash + (this.name != null ? this.name.hashCode() : 0);
        hash = 19 * hash + (this.address != null ? this.address.hashCode() : 0);
        return hash;
    }
}

dan sekarang seperti inilah cara penggunaan XStream, misal kita akan mendapatkan String XML dari class Address dan Person :

package com.nohnit.xtream;

import com.thoughtworks.xstream.XStream;

public class Main {

    public static void main(String[] nohnit) {
        XStream xStream = new XStream();
        xStream.alias("address", Address.class);
        xStream.alias("person", Person.class);

        Person person = new Person();
        person.setId(1);
        person.setName("Eko Kurnaiwan Khannedy");

        Address address = new Address();
        address.setCity("Subang");
        address.setCountry("Indonesia");
        address.setPostalCode("41271");
        address.setStreet("Jl Raya Kalijati");
        person.setAddress(address);

        String hasil = xStream.toXML(person);
        System.out.println(hasil);
    }
}

dan setelah dicompile dan dijalankan, maka akan tertrace tulisan seperti dibawah ini :


  1
  Eko Kurnaiwan Khannedy
  <address>
    Jl Raya Kalijati
    Subang
    Indonesia
    41271
  </address>

bagaimana?

gampangkan? :D


http://xstream.codehaus.org/

  1. 29 Desember 2008 pukul 14:04 | #1

    mas, fungsi dari serialize itu apa sich. Dalam prakteknya dimana dipakeknya, maklum masih newbie ghitu?????

    • 30 Desember 2008 pukul 15:41 | #2

      serialize tuh dimana object bisa di distribusikan
      u bakal ketemu serialize kalo belajar Java IO,
      RMI, JMS, dan ORM :D

  2. abu roziq
    2 April 2009 pukul 14:44 | #3

    waaah…baru kali ini aku tau…heheheh…maklum
    kalo koneksi database MYSQL dibuat sprti diatas bisa nggak mas…
    tolong ya caranya…
    makasih buanyak masss…..baynyak masukkan nich

  1. 5 April 2009 pukul 03:24 | #1
  2. 26 Mei 2009 pukul 15:32 | #2