İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Zafer Teker
tekzaf@yahoo.com

Midlet'lerde KXML ile bir XML resource'nu parse etme örneği

Giriş

Bu örnekte bir xml resource dosyasını KXML API'si ile parse edip değeri text box'ta gösteriyoruz. Bunun için önce KXML API'sinin source kodlarını indirip, jar'a eklememiz gerekir. (http://www.kxml.org) KXML Source kodlarını projenizin source kodlarının yanına koymak yeterlidir.

intro.xml dosyası jar'a eklenecektir. Bu dosyanın içeriğindeki message yazısı alınıp text box'ta gösterilecektir.

Göster Gizle Kopar Satır Gizle Satır Göster
<intro>
  <message>Hello  KXML</message>
</intro>
Göster Gizle Kopar Satır Gizle Satır Göster
  1 import javax.microedition.midlet.*;
  2 import javax.microedition.lcdui.*;
  3 import java.io.*;
  4 import org.kxml.*;
  5 import org.kxml.parser.*;
  6 public class KxmlTestMIDlet extends MIDlet{
  7     public void startApp(){
  8         TextBox box=new TextBox("","",100,TextField.ANY);
  9         try{
 10             String message=parseMessage();
 11             box.setString(message);
 12         }catch(Exception e){
 13             e.printStackTrace();
 14             box.setString("Exception");
 15         }
 16         Display.getDisplay(this).setCurrent(box);        
 17     }
 18     public void pauseApp(){}    
 19     public void destroyApp(boolean unconditional){}
 20     
 21     public String parseMessage() throws Exception{
 22         XmlParser parser=getParser();
 23         ParseEvent event=null;        
 24         while((event=parser.read()).getType()!=Xml.END_DOCUMENT){
 25             String name=event.getName();
 26             if(name!=null&&name.equals("message")){
 27                 event=parser.read();
 28                 return event.getText();
 29             }
 30         }       
 31         return "";
 32     }
 33     private XmlParser getParser(){
 34         XmlParser parser = null;
 35         try{
 36             Class c=this.getClass();
 37             InputStream is=c.getResourceAsStream("/intro.xml");
 38             parser=new XmlParser(new InputStreamReader(is));
 39         }catch(IOException e){
 40             e.printStackTrace();
 41         }
 42         return parser;
 43     }
 44 }

Midlet yüklendiğinde (startApp method'u çağrıldığında) bir TextBox nesnesi yaratılır. Daha sonra parseMessage method'u çağrılarak intro.xml dosyası içindeki mesaj yazısı alınır ve text box'ta gösterilir.

getParser() methodu resource dosyasından bir InputStream yaratıp XMLParser class'ının kurucusuna verir. XMLParser KXML API'sinde XML dökümanını parse etmek için kullanılır. parseMessage method'u önce XMLParser nesnesini alır. Burada en önemli class ParseEvent'tir. ParseEvent XML dökümanlarındaki element,attribute,text,entity vs. gibi yapıların özelliklerini tutur. İstediğimiz message elementinin text'tini almaktır. Bunun için dökümanın sonuna kadar sırasıyla ParseEvent'leri almamız gerekir. XMLParser nesnesinin read methodu bir sonraki ParseEvent'i verir. Dökümanın sonuna geldiğimizi

event=parser.read()).getType()!=Xml.END_DOCUMENT

şeklinde anlarız. İlk read methodu bize intro elementini verir. Bu elementin adı message olmadığı için döngü tekrar eder ve bir daha ki read methodu bize message elementini verir. message elementini bulduktan sonra read methodu çağrılırsa bu elementin içindeki text bulunmuş olur. Böylece istenen text bulunmuş olur.

Dosya Listesi

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