İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır

SAX Parser

SAX Simple API for XML)

SAX (Simple API for XML) XML belgelerindeki veriye erişim için kullanılan bir kütüphane standardıdır. DOM Parser'ların implementasyonu için de SAX kullanılabilir. Java'daki SAX parser'ın yapıtğı şey, bir XML belgesinin içindekileri programcıya element, attribute ve text düğümü olarak vermektir. Çalışma tarzı, bir düğüme rasladıkça programa bunu bildirmekten ibarettir. Belge başladığında ve bittiğinde, element başladığında ve bittiğinde,elementlerin içindeki metinlerle karşılaştığında ilgili method çağrılarak programcıya gerekli eylemi yapması için olanak sunar.

SAX kütüphanesinin temel class'ı SAXParser, DocumentBuilder'ın aksine programcıya XML document'indeki verileri içeren bir nesne vermez. Onun yerine bir şeyle karşılaştıkça çağıracağı bir interface (DefaultHandler) alır. Bunun yararı da zararı da yerine göre değişir. Zararı, XML belgesi içerisindeki veriyi programcının kendisi toplaması zorunluluğudur. SAX parser veriyi buldukça programa verir. Gerisine karşışmaz. Yararı ise, özellikle çok büyük belgelerde arama gibi amaçlarla bir elemanı bulunca işleyişin durudurulabilmesidir. Yani SaxParser kullanarak bir belgenin içinde bir element bulunup, başka işlem yapmadan çıkılabilir.

SAXParser class'ı SAXParserFactory tarafından üretilir. SAXParser'a parse edilecek belge dışında bir DefaultHandler interface'i (daha doğrusu bu interface'i implemet eden bir class verilir. SAXParser belge içerisinde dolaşıp elemanlarla karşılaştıkça DocumentHandler'ın ilgili methodu çağrılır.

Bir XML document'inin içerisindekileri işleyen bir örnek yapalım :

SaxParserTest.javaİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 package com.godoro.samples.xml;
  2 import javax.xml.parsers.*;
  3 import org.xml.sax.*;
  4 import org.xml.sax.helpers.*;
  5 public class SaxParserTest {
  6   
  7   public static void main(String[] args){
  8     String folder="C:\\Godoro\\Projects\\Java\\Education\\JavaBook\\test";    
  9     String uri=folder+"\\sax.xml";
 10     try{            
 11       SAXParserFactory factory=SAXParserFactory.newInstance();
 12       SAXParser parser=factory.newSAXParser();
 13       DefaultHandler handler=new DefaultHandler(){               
 14   public void startDocument(){
 15     System.out.println("Starting Document...");      
 16   }
 17   public void startElement(String uri
 18     ,String localName,String qname,Attributes attributes){
 19       System.out.println("Qualified Name : '"+qname+"'");
 20       if(qname.equals("student")){
 21     String no=attributes.getValue("no");
 22     System.out.println("no : '"+ no+"'");                        
 23       }
 24   }
 25   public void characters(char[] ch, int start, int finish){                    
 26       String string=new String(ch,start,finish);
 27       System.out.println("Characters : '"+string+"'");
 28   }
 29   public void endDocument(){
 30     System.out.println("Ending Document...");      
 31   }  
 32       };
 33       parser.parse(uri,handler);
 34     }catch(Exception e){
 35   e.printStackTrace();
 36     }
 37   }  
 38   
 39 }

Bu örneğin parse ettiği XML document'ı :

sax.xmlİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 <class name="5fena">
  2     <student no="1234">
  3         <name>Ali</name>
  4         <surname>Yilmaz</surname>
  5     </student>
  6     <student no="1202">
  7         <name>Mehmet</name>
  8         <surname>Demir</surname>
  9     </student>    
 10 </class>

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır