Örnek

Xalan APIsi Kullanan Basit Bir SAX Parser Örneği

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
zafer.teker , 25.05.2018

Bu Sayfayı Paylaş:

Fibiler Üyelerinin Yorumları


Tüm üyeler içeriklere yorum ekleyerek katkıda bulunabilir : Yorum Gir

Misafir Yorumları




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir