
JOOX – Java ile XML işlemenin kolay yolu
Java ile XML biçimiyle ilgili işlemler için JAXP (JSR 206: JavaTM API for XML Processing) standardı bulunmaktadır. Bu standart içinde üç biçimde XML işlemek mümkündür. Bu yöntemler DOM, SAX ve StAX ‘tir;
Bu yöntemlerin birbirlerine göre avantaj ve dezavantaj durumları var, fakat her biri için XML işlemek zorlayıcı.
Burada ise ben JOOX kütüphanesini tanıtmak istiyorum. JOOX, Jquery kütüphanesinden esinlenen ve XML işlemeyi kolaylaştıran bir kütüphanedir. Eğer daha önceden bir JQuery deneyiminiz var ise JOOX kullanmak size çok kolay gelecektir.
JOOX Dependency
JOOX ile çalışmaya başlamak için JOOX Jar bağımlılığının Java projenizde bulanması gerekmektedir. Eğer Maven aracını kullanıyorsanız aşağıdaki Maven dependency elemanını pom.xml içerisine eklemeniz yeterlidir.
<dependency>
<groupId>org.jooq</groupId>
<artifactId>joox</artifactId>
<version>1.2.0</version>
</dependency>
JOOX Başlangıç
JOOX kütüphanesi, JQuery’e benzer biçimde $ karakteri üzerinden XML elemanlarına erişmektedir. JQuery $ isimli bir fonksiyon barındırırken, JOOX $ adında statik bir Java metodu barındırmaktadır. $ statik metodu org.joox.JOOX sınıfı içerisinde bulunduğu için JOOX.$ ile bu metoda erişim sağlanmaktadır. Bu metod ise Match türünden bir nesne döndürmektedir.
Match match = JOOX.$();
Eğer istenirsa static import deyimiyle bu kullanım daha da sadeleştirilebilir.
import static org.joox.JOOX.$;
...
Match match = $();
JOOX ile XML oluşturmak
JOOX ile XML oluşturmak için $ metodunu kullanabiliriz. Örneğin aşağıdaki XML dökümanını JOOX ile oluşturmayı deneyelim.
<books>
<book id="1">
<name>Java ve Yazılım Tasarımı</name>
<price>35</price>
<author>Altuğ B. Altıntaş</author>
</book>
<book id="2">
<name>Java Mimarisiyle Kurumsal Çözümler</name>
<price>25</price>
<author>Rahman Usta</author>
</book>
</books>
Bunun için aşağıdaki JOOX kodlarını kullanabiliriz.
Match $books = $("<books></books>"); (1)
$books.append("<book id='1'></book>"); (2)
$books.append("<book id='2'></book>"); (3)
$books
.find("book[id='1']") (4)
.append("<name>Java ve Yazılım Tasarımı</name>") (5)
.append("<price>35</price>") (6)
.append("<author>Altuğ B. Altıntaş</author>"); (7)
$books
.find("book[id='2']") (8)
.append("<name>Java Mimarisiyle Kurumsal Çözümler</name>") (9)
.append("<price>25</price>") (10)
.append("<author>Rahman Usta</author>"); (11)
$books.write(System.out); (12)
$books.write(new File("./books.xml")); (13)
String content = $books.content(); (14)
String text = $books.text(); (15)
booksXML elemanı oluşturuluyor.booksiçineid='1'olan birbookelemanı ekliyor.booksiçineid='2'olan birbookelemanı ekliyor.booksiçindenid='1'olan elemanı seçiyor.book[id='1']içinenameelemanını ekliyor.book[id='1']içinepriceelemanını ekliyor.book[id='1']içineauthorelemanını ekliyor.booksiçindenid='2'olan elemanı seçiyor.book[id='2']içinenameelemanını ekliyor.book[id='2']içinepriceelemanını ekliyor.book[id='2']içineauthorelemanını ekliyor.- XML içeriğini konsola çıktılıyor.
- XML içeriğini
books.xmldosyasına yazıyor. - XML içeriğini
Stringolarak elde ediyor. - XML eleman içeriğini
Stringolarak elde ediyor.
JOOX ile XML okumak
JOOX ile XML oluşturmak için $ metodunu kullanabiliriz. Örneğin az evvel dosya sistemine yazdığımız XML dökümanını JOOX ile okumayı deneyelim.
Match $books = $(new File("./books.xml")); (1)
$books.find("book").forEach(book -> { (2)
String id = $(book).attr("id"); (3)
String name = $(book).find("name").text(); (4)
String author = $(book).find("author").text(); (5)
String price = $(book).find("price").text(); (6)
System.out.format("%s : %s - %s - %s %n", id, name, author, price);
});
books.xmlokunuyor veMatchnesnesi oluşturuluyor.- Tüm
bookelemanları bir bir listeleniyor. - O anki
bookelemanınınidözniteliği okunuyor. - O anki
bookelemanınınnamebilgisi okunuyor. - O anki
bookelemanınınauthorbilgisi okunuyor. - O anki
bookelemanınınpricebilgisi okunuyor.
Yukarıdaki kodlar koşturulduğunda aşağıdaki çıktı elde ediliyor.
1 : Java ve Yazılım Tasarımı - Altuğ B. Altıntaş - 35 2 : Java Mimarisiyle Kurumsal Çözümler - Rahman Usta - 25
Match $books = $(new File("./books.xml")); (1)
Match firstBook = $books.find("book").first(); (2)
Match lastBook = $books.find("book").last(); (3)
String firstBookAuthorName = firstBook.find("author").text(); (4)
String lastBookName = lastBook.find("name").text(); (5)
System.out.format("firstBookAuthorName: %s %n",firstBookAuthorName);
System.out.format("lastBookName: %s %n",lastBookName);
books.xmlokunuyor veMatchnesnesi oluşturuluyor.bookselemanı içindeki ilkbookelemanı seçiliyorbookselemanı içindeki sonbookelemanı seçiliyor- İlk
bookelemanı içindekiauthorelemanının içeriği okuyor - Son
bookelemanı içindekinameelemanının içeriği okuyor
Yukarıdaki kodlar koşturulduğunda aşağıdaki çıktı elde ediliyor.
firstBookAuthorName: Altuğ B. Altıntaş lastBookName: Java Mimarisiyle Kurumsal Çözümler
Siz de kolay kullanım açısından JOOX ‘u tercih edebilirsiniz.
Tekrar görüşmek dileğiyle..



