Merhaba arkadaşlar bu yazımda sizlere JAXB xml parser ve xml dönüşümlerinden bahsetmek istiyorum. JAXB nin açılımı java architech for xml binding ( java mimarileri için xml yükleme) olarak açılımı vardır.

Burada jaxb’nin temel de 2 tane kullanım formatı (annotaion) Marshalling ve Unmarshalling kavramlarını kullanacağız.

Marshalling – Java objelerini XML’e çevirme işini yapar

Unmarshalling – Xml içeriğini java objesine çevirme işini yapar.

Eğer siz maven projesi yapıyorsanız aşağıda yer alan kodları pom.xml e eklemeniz gerekmektedir

Jar’ın 04.03.2016 da yer alan en güncel versiyonu  2.2.11 dir. Burada yer alan proje 2.2.11 göre hazırlanmıştır ve test edilmiştir.

Grandle projesi yapıyorsak ise ‘com.sun.xml.bind:jaxb-impl:2.2.11’ bu komutu grandle property ye eklediğiniz zaman artık bu jarı rahatlıkla kullanabilirsiniz.

Şimdi gelelim kod kısmına

@XmlRootElement annotationu ile xml’in ana taginin Customer olduğunu belirtiyoruz.

@XmlElement diye belirttiğimizde ise onun alt tagini belirtmiş oluyoruz. Örnek vermek gerekirse bizim aşağıda yazmış olduğumuz kod ÇIKTI kısmında gördüğümüz gibi bir xml’i bize vermektedir.

Biz Java Objesini XML’e cast etmek istediğimizde aşağıda yer alan kodu yazmamız yeterli olacaktır. (Marchalling)

File file = new File(“C:\\file.xml”);  // C:\\file.xml de yer alan dosyaya bakıyor

JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class); // Yukarıda Customer sınıfında belirttiğimiz elementlere göre içeriği hazırlıyor

Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); // Xml’e dönüştürmeye hazır hale getiriliyor

// output pretty printed

jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // Xml’in formatı belirleniyor

jaxbMarshaller.marshal(customer, file);

jaxbMarshaller.marshal(customer, System.out); //Dosyaya yazılıyor

Kodun çıktısı ise

Şimdi ise xml den Objeye nasıl döneceğimizden bahsetmek istiyorum

File file = new File(“C:\\file.xml”); // C:\\file.xml e bakıyor

JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class); // Xml içeriğinin olması gerektiği biçime bakıyor

Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();

Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file); // Xml içeriği objeye set ediliyor

System.out.println(customer);

Kodlar aşağıdaki gibidir

Program çıktısı: