E ai galera blz?!?! Estou há um bom tempo tentado criar uma MIDlet que leia um arquivo XML usando a API kxml2-min-2.2.2.jar (http://kxml.sourceforge.net). Estou tentando fazer um exemplo do site Java Magazine (http://www.devmedia.com.br/articles/viewcomp.asp?comp=2099&hl=).
Estou desenvolvendo o aplicativo no Eclipse. Acho que não estou sabendo usar a API quando eu tento executar o código recebo a seguinte mensagem:
java.lang.NoClassDefFoundError: XMLReader/KXmlParser: org/xmlpull/v1/XmlPullParser
at XMLReader.XMLParserMidlet.parser(+0)
at XMLReader.XMLParserMidlet.startApp(+26)
at javax.microedition.midlet.MIDletProxy.startApp(+7)
at com.sun.midp.midlet.Scheduler.schedule(+270)
at com.sun.midp.main.Main.runLocalClass(+28)
at com.sun.midp.main.Main.main(+116)
Para utilizar a API kxml2-min-2.2.2.jar estou fazendo o seguinte: Crio um novo projeto > Seleciono o WTK (group) e o tipo de aparelho (device). Em seguida antes de finalizar clico na aba Libraries em seguida Add External JARs…. Está correto?
Será que alguém poderia me dizer como faço para usar a API corretamente. O código XML e da MIDlet segue abaixo.
vlw galera!!
código XML
<?xml version="1.0" encoding="UTF-8"?>
<agenda>
<pessoa>
<nome>Tiago</nome>
<fone>tel</fone>
</pessoa>
<pessoa>
<nome>Fernanda</nome>
<fone>tel1</fone>
</pessoa>
</agenda>
Código da MIDlet
package XMLReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import org.xmlpull.v1.XmlPullParser;
public class XMLParserMidlet extends MIDlet {
Form form = new Form("Pessoas");
protected void startApp() throws MIDletStateChangeException {
InputStream in = getClass().getResourceAsStream("c:\\pessoas.xml");
try {
Display.getDisplay(this).setCurrent(form);
parser(in);
} catch (Exception e) {
e.printStackTrace();
}
}
private void parser(InputStream in) throws Exception {
//Inicia o XMLParser
KXmlParser parser = new KXmlParser();
parser.setInput(new InputStreamReader(in));
parser.nextTag();
//Posiciona na tag <agenda>
parser.require(XmlPullParser.START_TAG, null, "agenda");
//Enquanto é diferente de END_TAG
while (parser.nextTag () != XmlPullParser.END_TAG)
{
//Posiciona na tag <pessoa>
parser.require(XmlPullParser.START_TAG, null, "pessoa");
parserPessoa(parser);
form.append("\n");
parser.require(XmlPullParser.END_TAG, null, "pessoa");
}
parser.require(XmlPullParser.END_TAG, null, "agenda");
parser.next();
parser.require(XmlPullParser.END_DOCUMENT, null, null);
}
private void parserPessoa(KXmlParser parser) throws Exception {
//Enquanto é diferente de </pessoa>
while (parser.nextTag() != XmlPullParser.END_TAG) {
//Posiciona em uma tag "START". Ex: <nome> ou <fone>
parser.require(XmlPullParser.START_TAG, null, null);
String name = parser.getName();
String text = parser.nextText();
System.out.println("Tag: " + name + " -> " + text);
//Adiciona o texto no Form
form.append(text);
//Posiciona no fim da tag </nome> ou </fone>
parser.require(XmlPullParser.END_TAG, null, name);
}
}
public XMLParserMidlet() {
// TODO Auto-generated constructor stub
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
}