2012-08-27 24 views
0

我有一個LWUIT j2me應用程序解析本地XML。 我在(Java TM Platform Micro SDK 3.0 DefultFxPhone 1) 和asha模擬器(Nokia_SDK_1_1_Java)上嘗試了我的代碼。 另外我測試了不同設備上的代碼,它工作正常。 但是,當我在(Nokia_SDK_2_0_Java模擬器Nokia Asha 305)上測試它時,while循環中的條件始終爲false。我認爲解析器出現問題。 有什麼幫助嗎? 我怎樣才能找出爲什麼這個問題只發生在這個SDK的解析器。 和我得到這個parseEvent event = Parser.read()的異常;解析Xml在某些模擬器上的Lwuit J2ME應用程序中失敗

java.io.IOException 
at com.sun.cldc.io.ResourceInputStream.read(+104) 
at java.io.Reader.read(Reader.java:99) 
at java.io.InputStreamReader.read(+11) 
at org.kxml.parser.XmlParser.peekChar(+36) 
at org.kxml.parser.XmlParser.peek(+68) 
at org.kxml.parser.XmlParser.read(+11) 

這裏是解析代碼:

Reader reader = new InputStreamReader(in, "UTF-8"); 

    XmlParser parser=new XmlParser(reader); 
    Vector items = new Vector(); 
    String tipId; 
    String Text; 
    String tipImage; 
    String cateId = null; 
    String cateName; 
    String objId = null; 
    String objName; 

    ParseEvent event = parser.read(); 
    ParseEvent readTextEvent = null; 
    while (event.getType() != Xml.END_DOCUMENT) { 
      switch (event.getType()) { 
      case Xml.START_TAG: 

        if (event.getName().equalsIgnoreCase("Category")){ 
        cateId=event.getAttribute("id").getValue(); 

       } 

       if (event.getName().equalsIgnoreCase("object")){ 

        objId=event.getAttribute("id").getValue(); 

       } 

       if (event.getName().equalsIgnoreCase("Tip")){ 
        if(CategoryId.equals(cateId) && objectId.equals(objId)) 
        { 

        readTextEvent=parser.read(); 
        bean=new bean(); 
        isItem=true; 

        } 

       } 
       if (isItem &&event.getName().equalsIgnoreCase("text")){ 
        readTextEvent=parser.read(); 
        Text = readTextEvent.getText(); 
        bean.setTipText(Text); 



       } 

       if (isItem &&event.getName().equalsIgnoreCase("Image")){ 
        readTextEvent=parser.read(); 
        tipImage = readTextEvent.getText(); 

        bean.setTipImage(tipImage); 
        isItem=false; 
        items.addElement(bean); 

       } 

       break; 
       case Xml.END_TAG: 
       if (event.getName().equalsIgnoreCase("Tip")) { 

        bean = null; 
        isItem = false; 
        } 
       break; 
       case Xml.TEXT: 
       break; 
      } 
      event = null; 
      event = parser.read(); 

      } 
+0

請爲解析器初始化添加代碼。 –

+0

Done.I添加了解析器初始化。 – Reham

+0

該問題可能與變量初始化有關。你還可以添加它的代碼嗎? –

回答

0

從LWUIT/CodenameOneXmlParser不具有讀取方法。您提供的堆棧似乎不完整,因爲它缺少對讀取方法的調用。

相關問題