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
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 .