XSTream İle Java'dan XML'e Veri Dönüşümü
Merhabalar arkadaşlar.
Bu ve gelecek yazıda size Java’dan XML’e ve XML’den Java’ya dönüş işlemlerinde işimizi kolaylaştıran bir kütüphane olan XSTream kütüphanesinin kullanımını anlatacağım.
Bu yazının konusu Java’dan XML’e dönüşüm olacak ve bir sonraki yazıda XStream ile XML’den Java’ya dönüşüm konusunu anlatacağım.
Bu yazıdaki kodlara https://github.com/ilkgunel/XStreamDemoProject adresinden ulaşabilirsiniz.
İlk olarak https://mvnrepository.com/artifact/xstream/xstream/ adresi üzerinden XStream için Maven bağımlılık kodumuzu edinelim. Bu yazı yazılırken ki en güncel sürüm 1.2.2 sürümüdür. Dolayısı ile bağımlılık kodu da şu şekilde:
IDE’miz üzerinde bir Maven projesi açtıktan sonra yukarıdaki kodu pom.xml dosyamıza ekleyelim. Muhtemelen bu bağımlılık local Maven reponuzda bulunmadığından hemen kullanıma hazır olmayacak. NetBeans IDE üzerinde sağ tıklayıp Clean&Build deyip, Eclipse IDE üzerinde sağ tıklayıp Run As -> Main Build diyelim ve Goals kısmına clean install yazıp Run butonuna tıklayalım.
XSTream artık kullanıma hazır hale geldikten sonra şimdi com.ilkaygunel.pojo adında bir paket oluştuyorum ve içine Address ve Person adında iki sınıf oluşturuyorum.
Address.java
Address sınıfı pure Java sınıfı arkadşalar. İçerisinde alan tanımı ve onların get-set metotları dışında bir şey yok.
Person.java
Person sınıfımız da tıpkı Address sınıfı gibi içerisinde alanlar tutuyor ve onların get-set metotlarına sahip. Burada XML’deki iç içe alanları simgeleyecek şekilde Person sınıfı içerisinde Address sınıfından bir nesne kullandık.
Şimdi bir de com.ilkaygunel.mainclasses adında bir paket oluşturuyorum ve içerisinde SinglePersonToXML.java sınıfını oluşturuyorum. Sınıf içeriği şöyle:
SinglePersonToXML.java
SinglePersonToXML sınıfı içerisinde bir Address nesnesi oluşturduk ve akabinde bir Person nesnesi oluşturup address alanına oluşturduğumuz Address nesnesini atadık.
Akabinde bir XML çıktısı almak için kullanacağımız XSTream nesnesini oluşturduk. Oluştuduğumuz bu XSTream nesnesine XML dönüşümü sırasında kullanılacak sınıfları alias() metodu ile tanıtıyoruz. Biz burada Address ve Person sınıflarını kullandığımız için alias metodu ile person ve address alanlarını tanıtıyoruz.
Sınıfa sağ tıklayıp Run As -> Java Application dediğimizde şu şekilde bir çıktı almamız gerekir:
Ekran görüntüsünden görebileceğimiz gibi Person nesnesi başarılı bir şekilde XML’e çevirildi.
Şimdi birden fazla Person nesnesinin barındığı bir liste nasıl XML’e çevirilir ona bakalım.
Şimdi PersonList adında bir sınıf oluşturalım ve içeriği şu şekilde olsun:
PersonList.java
PersonList sınıfı içerinde bir liste tanımlıyoruz, yapılandırıcı içinde bu nesneyi oluşturuyoruz ve bir listeye ekleme yapan add metodumuz mevcut.
MultiplePersonToXML.java
Eldeki bir listeyi XML’e çevirecek MultiplePersonToXML sınıfımızın içeriği şu şekilde:
Önceki örnekteki gibi XSTream nesnemizi oluşturup person ve address alias atamasını yapıyoruz. Akabinde az önce oluşturduğumuz PersonList sınıfını da aynı şekilde alias metodu ile XSTream nesnemize tanıtıyoruz. PersonList sınıfını tanıtma işleminin ardından addImplicitCollection() metodu ile PersonList sınıfı içerisindeki list nesnesini XSTream’e tanıtıyoruz. addImplicitCollection() metodu ile yapılan bu tanıtma işlemi bir PersonList nesnesi XML’e dönüşüm için geldiğinde içerisindeki list nesnesinin birden çok Person’a sahip olduğuna işaret eder ve dönüşümü de doğru şekilde yapar.
Kodun devam eden kısmında PersonList sınıfından bir nesne üretiyoruz ve nesnenin addPerson() metodu ile Person nesnelerini ekliyoruz. Son olarak da bu PersonList nesnesini toXML metoduna verip çıkan sonucu konsola yazdırıyoruz. Sınıfı çalıştırdığımızda şu şekilde bir konsol çıktımız olacak:
Bu yazıda anlatacaklarım bu kadar arkadaşlar. Gelecek yazıda da XStream ile XML’den Java’ya dönüşüm konusunu anlatacağım. Görüşene kadar sağlıcakla kalın.
Selam ve Sevgilerimle