Ola galera, apesar de ser iniciante em java e j2me, estou postando no “Java Avançado” por se tratar de manipulação de arquivo e etc, descupe se postei em lugar errado.
Estou fazendo uma aplicação para ler uma imagem em xml e reconverter essa imagem na tela do celular.
Estou indo por partes, primeiro aprendendo como ler um xml no j2me.
Porém estou com um problema.
Ele não esta lendo o xml pelo o que parece, pois quanod fui depurar, ele chega até a parte de fazer o parse no xml e cai no catch, vou postar o código para que me ajudem:
import org.kxml2.io.KXmlParser;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
public class AplicacaoDesdeoIncio extends MIDlet
{
Form form = new Form("Pessoas");
public void startApp() throws MIDletStateChangeException
{
String xml = "<?xml version="+"\"1.0\""
+ " encoding="+"\"UTF-8\""+"?>"
+ "<agenda>"
+ "<pessoa><nome>Arthur Oliveira</nome><fone> ([telefone removido] </fone></pessoa>"
+ "</agenda>";
System.out.print(xml+"\n");
InputStream in = getClass().getResourceAsStream(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 void pauseApp()
{
}
public void destroyApp(boolean uncoditional)
{
System.out.println("finalizou");
}
nessa aplicação eu ja testei com o xml na pasta da aplicação e nao rodou, por isso criei uma string com o xml para ver se ele conseguia ler.
Quando depurei, a aplicação vem até a linha
parser.setInput();new InputStreamReader(in)
e sobe para o catch:
InputStream in = getClass().getResourceAsStream(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));
Estou usando o netbeans 7, kxml 2.2 para o parse.
Agradeço desde ja galera (:
Té+