XML belgesi aşağıdaki gibidir :
<!--?xml version="1.0" encoding="ISO-8859-9"-->
<test>
<person id="12">
<name>Ali</name>
<tel id="home">02129456789</tel>
</person>
<person id="asd">
<name>Veli</name>
<tel id="home">02124365</tel>
</person>
<person id="fasf">
<name>Yusuf</name>
<tel id="home">1212162840</tel>
</person>
</test>
Bu dosyanın tüm içeriğini ekrana basan örnek aşağıdaki gibidir :
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.DefaultHandler;
public class SAXTest {
private String theFile;
public SAXTest(String file) {
theFile = file;
}
public void print() {
DefaultHandler handler = new DefaultHandler() {
@Override
public void startElement(String uri, String lname, String qname, Attributes attributes) {
System.out.println("element name: " + qname);
for (int i = 0; i < attributes.getLength(); i++) {
String name = attributes.getQName(i);
String value = attributes.getValue(i);
System.out.println(" attribute name= " + name + " value= " + value);
}
}
@Override
public void characters(char[] ch, int start, int finish) {
String s = new String(ch, start, finish);
System.out.println("element value: " + s);
}
};
try {
SAXParser parser = getParser();
parser.parse(theFile, handler);
} catch (Exception e) {
e.printStackTrace();
}
}
public SAXParser getParser() throws Exception {
SAXParserFactory factory = SAXParserFactory.newInstance();
return factory.newSAXParser();
}
static public void main(String[] args) {
String file = "test.xml";
SAXTest test = new SAXTest(file);
test.print();
}
}
Önce bir SAXParser nesnesini veren bir fonksiyon yarattık :
public SAXParser getParser() throws Exception{
SAXParserFactory factory=SAXParserFactory.newInstance();
return factory.newSAXParser();
}
Bir XML Document'ini parse etmek için bir Handler vermemiz gereklidir. Bu handler nesnesi document'le ile ilgili tüm olaylarda çağrılacaktır. Biz startElement ve characters method'larını dolduruyoruz. startElement bir element'te rastalndığında , characters method'u ise text'ler rastlandığında çağrılacaktır. Biz handler'i şu şekilde yarrattık
DefaultHandler handler=new DefaultHandler(){
public void startElement(String uri,String lname,String qname,Attributes attributes){
//element'e rastlandı
}
public void characters(char[] ch, int start, int finish){
//karaktere rastlandı
}
};
daha sonra parse etme işlemini yapıyoruz.
SAXParser parser=getParser();
parser.parse(theFile,handler);
getParser method'u bize SAXParser'ı vermektedir. Tüm bu işlemler print methodunun içinde yapılmıştır. print methodu çağrıldığında verilen XML'deki element'ler ve element'leri değerleri basılacaktır.
startEement methodu'na element'in attribute'leri gönderilir. Biz bir döngü açıp tüm attribute'leri bastırıyoruz. characters methodunda ise bize char[] dizisi, ilk index ve son index verilir. Bizde element'in değerini
String s=new String(ch,start,finish);
ile s string'ine çeviririz