6 Ekim 2014 Pazartesi

Simple XML

Java da xml marshall ve unmarshall işlemleri için kullanılabilecek farklı implementasyonlar mevcut bunlardan en çok tercih edileni artık Java 6 dan sonra standart javada da yer alan JAX-B dir. Toplam boyutun önemli olduğu uygulamalarda toplamda 9 MB ulaşan boyutu ile bir android uygulaması için normal görülebilecek boyut hakkının 50% sini gasp etmektedir bu da bizi farklı bir arayışa yönlendirmektedir.Kullandıkça aslında JAX-B den daha mı iyi diye düşünmeme sebep olan Simple XML böyle durumlarda kapladığı minumum alan ile oldukça uygun bir çözüm gibi gözükmektedir.

Simple xml i aşağıdaki linkten indirebilir örnekleri inceleyebilirsiniz: 

http://simple.sourceforge.net/download.php
Jax-B ve simple xml karşılaştırması için aşağıdaki yazıyı okuyabilirsiniz : 
http://blog.bdoughan.com/2010/10/how-does-jaxb-compare-to-simple.html

 Haftanın içinde day bilgisini tutmak için yapı simple xml de aşağıdaki gibi kurulabilir
@Root
public class Day {
    
    @Attribute
    private String value;

    public Day(){

    }

    public Day( String value) {
        this.value = value;
    }
    public String getValue() {
        return value;
    }

    public void setValue(String value)  {
        this.value = value;
    }

  

}


Ve day classını içinde bulunduran Week classı
@Root(name = "week")
public class Week {
    @Attribute(name="value")
    private String value;
    @ElementList(inline = true)
    private List dayList;
    public Week(){

    }
    public Week(String value, List dayList) {
        this.value = value;
        this.dayList = dayList;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public List getDayList() {
        return dayList;
    }

    public void setDayList(List dayList) {
        this.dayList = dayList;
    }
    
    
    
}


Serialize etme işlemi Jax-B deki marshall işlemine karşılık gelir ve aşağıdaki gibi yapılır
public static void main(String[] args) {

        Day day=new Day("Pazartesi");
        List dayList=new ArrayList();
        dayList.add(day);
        Week week =new Week("1",dayList);
        File file= new File("C:\\Abdurrahman\\output.xml");
        Serializer serializer=new Persister();
        serializer.write(week,outputFile);//Yazmak icin
        Week readWeek=serializer.read(Week.class,file);//Okumak icin


}

Sonuç olarak aşağıdaki XML elde edilir




<week val="1"> <day value="Pazartesi"> <day value="Sali"> </day></day></week> xml deki attrribute kısımları bozuk çıkmış olabilir  value olması gerekmektedir aksi değerleri  dikkate almayınız.


org.simpleframework.xml.core.PersistenceException: Constructor not matched for

şeklinde bir hata alırsanız Tüm Pojo larınıza yada entity lerinize boş constructor ekleyiniz .

Hiç yorum yok:

Yorum Gönder