在一些模拟器上解析Xml在Lwuit J2ME应用程序中失败

时间:2012-08-27 17:15:43

标签: xml parsing java-me sdk lwuit

我有一个解析本地XML的LWUIT j2me应用程序。 我在(Java TM Platform Micro SDK 3.0 DefultFxPhone 1)上尝试了我的代码 并在asha模拟器(Nokia_SDK_1_1_Java)上。 此外,我在不同的设备上测试了代码,它工作正常。 但是,当我在(Nokia_SDK_2_0_Java模拟器诺基亚Asha 305)上测试它时,while循环中的条件总是假的。我认为解析器有问题。 有帮助吗? 我怎么能弄清楚为什么这个问题只发生在这个SDK的解析器中。 我在parseEvent事件= Parser.read();

上得到此异常
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();

          }

1 个答案:

答案 0 :(得分:0)

来自LWUIT / CodenameOneXmlParser没有读取方法。您提供的堆栈似乎不完整,因为它错过了对read方法的调用。