Bugünkü yazımızda, XML işlemcileri hakkında yazacağız. Önümüzde ana iki seçenek var.
*
DOM
*
SAX
DOM, SAX'tan daha yaşlıdır. XML dökümanlarını işlemek için ilk önce DOM kullanıyordu herkes. Fakat DOM'un bazı dezavantajları var. Mesela, XML dökümanı DOM ile işlenirse, DOM programı bütün XML kayıdı tamamen hafızaya alınır. Büyük XML kayıtları için bu işlem yavaş kalabilir.
Eğer bütün XML dosyasını nasıl olsa işlemek istiyorsanız, o zaman DOM işinize yarayabilir. Fakat XML dosyasından, sadece "birkaç" özel bölümlerden okuma yapmak istiyorsanız, SAX kullanmak daha hızlı olacaktır.
SAX, "vaka" modeli ile çalışır. Vaka modeli, yani Java dilinde 'event' modeli, normâl alışık olduğumuz, "sıralı işleyen" program modelinden biraz farklıdır. Sıralı işleyen programda, komutlar sıra ile işlenir. Programcı bu sırayı kod içinde belirtmiştir, önce şu olacak, sonra bu.
Vaka modeli içinde, şöyle demek mümkündür. "Ne zaman X olayı olursa, Y komutunu işlet".
Bu düşünce şeklinin, programlama stilinize etkileri büyüktür. Artık, sıralı dizi gibi işleyen komutlar yerine, artık vukuat komutları yazar hale geliyorsunuz.
SAX program modeli vaka üzerine kurulduğu için, cok hızlı bir şekilde XML işlemi mümkün olur. Çünkü artık işlemci, bütün dosyayı hafızada tutması gerekmez; böylece sadece istenen yere gelince, bir "vaka" başlatır. Sizin vaka komutlarınızda hemen o anda işleme konur. O komut içinde ne yapacağınız size kalmış. Veri tabanına yazabilirsiniz, e-posta gönderebilirsiniz, başka bir XML dosyasi içine kopyalayabilirisiniz.
SAX için yazılmış örnek bir program. Bu program title başlığında girilmiş bilgileri XML dökümanından buluyor.
class VakaKomutu extends DefaultHandler{
protected String tag = null; protected String content = null;