Aplicativo j2me para ler xml

0 respostas
M

Olá pessoal…
estou tentado fazendo um midlet no netbeans que leia um arquivo .xml qualquer e exiba ele na tela do dispositivo sem as tags do xml.

A princípio, eu estou utilizando o pacote kxml2 que é um parser de xml que transforma o arquivo .xml em texto retirando as tags.

eu fiz da seguinte forma:

import com.sun.midp.io.j2me.storage.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import org.kxml2.io.KXmlParser;
import org.xmlpull.v1.XmlPullParser;

import org.xmlpull.v1.XmlPullParserException;
/**
 *
 * @author  vital
 * @version
 */
public class ExPalm extends MIDlet {
     Form form = new Form("Pessoas");
 
      protected void startApp() throws MIDletStateChangeException {

          InputStream in = getClass().getResourceAsStream("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 void pauseApp() {
    }
    
    public void destroyApp(boolean unconditional) {
    }
}

E o xml é:

<?xml version="1.0" encoding="UTF-8"?>

<agenda>
    <pessoa>
        <nome>Joao</nome>
        <fone>3214-3322</fone>
    </pessoa>
    <pessoa>
        <nome>Vital</nome>
        <fone>32149999</fone>
    </pessoa>
    <pessoa>
        <nome>Carlos</nome>
        <fone>33277443</fone>
    </pessoa>
    
</agenda>

[b]Esse código está funcionando corretamente quando coloco pessoas.xml no mesmo diretório do projeto, porém o que eu queria era colocar o xml dentro de uma pasta chamada pessoas na unidade c:/ . Tentei modificar essa linha para InputStream in = getClass().getResourceAsStream("c:/Pessoas/pessoas.xml"); Mas não funciona :confused:

Alguem tem alguma idéia de como eu posso fazer isso?

Desde já agradeço!![/b]

Criado 27 de maio de 2007
Respostas 0
Participantes 1