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();
}
請爲解析器初始化添加代碼。 –
Done.I添加了解析器初始化。 – Reham
該問題可能與變量初始化有關。你還可以添加它的代碼嗎? –