XStream

XStream objeden xml e veya xml den objeye erişim icin kullanılan bir kütüphanedir. Aşağıda iki adet pojo sınıfı tanımlıyoruz.

Person sınıfı

    public class Person {
     private String firstname;
     private String lastname;
     private PhoneNumber phone;
     private PhoneNumber fax;
     
     public String getFirstname() {
      return firstname;
     }
     
     public void setFirstname(String firstname) {
      this.firstname = firstname;
     }
     
     public String getLastname() {
      return lastname;
     }
     
     public void setLastname(String lastname) {
      this.lastname = lastname;
     }
     
     public PhoneNumber getPhone() {
      return phone;
     }
     
     public void setPhone(PhoneNumber phone) {
      this.phone = phone;
     }
     
     public PhoneNumber getFax() {
      return fax;
     }
     
     public void setFax(PhoneNumber fax) {
      this.fax = fax;
     }
     
    }

PhoneNumber sınıfı

    public class PhoneNumber {
     private int code;
     private String number;
     
     public int getCode() {
      return code;
     }
     
     public void setCode(int code) {
      this.code = code;
     }
     
     public String getNumber() {
      return number;
     }
     
     public void setNumber(String number) {
      this.number = number;
     }
    }

Şimdi bu sınıflardan birer obje oluşturup bunu xml olarak alan bir örnek yazıyoruz.

    import com.thoughtworks.xstream.XStream;
     
    public class Demo {
     public static void main(String[] args) {
      XStream xstream = new XStream();
      Person melih1 = new Person();
      melih1.setFirstname("Melih");
      melih1.setLastname("Sakarya");
     
      PhoneNumber pn = new PhoneNumber();
      pn.setCode(532);
      pn.setNumber("1232244");
     
      melih1.setPhone(pn);
      String cikti = xstream.toXML(melih1);
      System.out.println(cikti);  
     }
    }

Bu kodun çıktısı aşağıdaki gibi olacaktır.

    <Person>
      <firstname>Melih</firstname>
      <lastname>Sakarya</lastname>
      <phone>
        <code>533</code>
        <number>1232244</number>
      </phone>
    </Person>



Var olan bir xml i objeye çevirmek içinse aşağıdaki işlemi yapabilirsiniz.

    String cikti = xstream.toXML(melih1);
    System.out.println(cikti);
    Person melih2 = (Person)xstream.fromXML(cikti);
    System.out.println(melih2.getFirstname());

Daha detaylı bilgi için aşağıdaki linki inceleyebilirsiniz.
http://xstream.codehaus.org/

Dec 13th, 2008
Tags: ,
  1. Dec 13th, 2008 at 23:26 | #1

    Her seye maydonoz oluyorum ama bu konuda da bir iki sey diyeyim. XStream;in annotation destegi var. bu sekilde getter-setter vs yazmadan da sanirim bu is yapilabilirdi.
    Ayrica, PhoneNumber sinifinin immutable olmasini yeglerdim mesela kodda. Constructor ile parametreleri yollayip.
    ikincisi benzeri sekilde Jaxb ile java6′da dogrudan bu yapilabiliyor sanirim. son olarak xml yazmak icin Wax adinda tatli bir kutuphane var, o da incelenebilir.
    http://www.ociweb.com/mark/programming/WAX.html

    saygilar.

  2. Dec 13th, 2008 at 23:46 | #2

    Estafurullah :) detaylari linkte vermistim cok karmasik ornekler vermemeye calisiyorum.

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>