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)
books
XML elemanı oluşturuluyor.books
içineid='1'
olan birbook
elemanı ekliyor.books
içineid='2'
olan birbook
elemanı ekliyor.books
içindenid='1'
olan elemanı seçiyor.book[id='1']
içinename
elemanını ekliyor.book[id='1']
içineprice
elemanını ekliyor.book[id='1']
içineauthor
elemanını ekliyor.books
içindenid='2'
olan elemanı seçiyor.book[id='2']
içinename
elemanını ekliyor.book[id='2']
içineprice
elemanını ekliyor.book[id='2']
içineauthor
elemanını ekliyor.- XML içeriğini konsola çıktılıyor.
- XML içeriğini
books.xml
dosyasına yazıyor. - XML içeriğini
String
olarak elde ediyor. - XML eleman içeriğini
String
olarak 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.xml
okunuyor veMatch
nesnesi oluşturuluyor.- Tüm
book
elemanları bir bir listeleniyor. - O anki
book
elemanınınid
özniteliği okunuyor. - O anki
book
elemanınınname
bilgisi okunuyor. - O anki
book
elemanınınauthor
bilgisi okunuyor. - O anki
book
elemanınınprice
bilgisi 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.xml
okunuyor veMatch
nesnesi oluşturuluyor.books
elemanı içindeki ilkbook
elemanı seçiliyorbooks
elemanı içindeki sonbook
elemanı seçiliyor- İlk
book
elemanı içindekiauthor
elemanının içeriği okuyor - Son
book
elemanı içindekiname
elemanı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..