Como ler dados de um arquivo xml, usando KXML [SOLUCIONADO]

4 respostas
diogofabri

Olá Pessoal, tudo bem?
Estou com dificuldade na utilização do KXML, estou precisando ler o seguinte conteúdo do meu arquivo .xml

<?xml version="1.0" encoding="iso-8859-1" ?> 
- <mbresources>
- <element id="resources">
  <data resource1="1" /> 
- <!--   monitor   
  --> 
  <data resource2="2" /> 
- <!--   processor   
  --> 
  <data resource3="3" /> 
- <!--   memory   
  --> 
  <data resource4="4" /> 
- <!--   network   
  --> 
  <data resource5="5" /> 
- <!--   device interactions   
  --> 
  </element>
- <element id="1">
  <type>display</type> 
  <resolutionx>240</resolutionx> 
  <resolutiony>291</resolutiony> 
  <numcolors>4096</numcolors> 
  <versiongraph3d>1.1</versiongraph3d> 
  </element>
- <element id="2">
  <type>processor</type> 
  <frequency>16.9</frequency> 
  <unity>mHz</unity> 
  </element>
- <element id="3">
  <type>Memory</type> 
  <total>2097152</total> 
  <free>1917188</free> 
  </element>
- <element id="4">
  <type>network</type> 
  <ports>COM1,COM2</ports> 
  <avaible1>Porta COMM não está disponível</avaible1> 
  <avaible2>socket</avaible2> 
  </element>
- <element id="5">
  </element>
</mbresources>

Preciso listar por ELEMENT ID , ou seja quando element id=1 lista as tags filhos dele, quando element id=2 lista as tags filhos dele.
Alguem sabe como fazer?
Meu código até o momento está assim:

public void parser(InputStream in) throws Exception {
    //Inicia o XMLParser

        //instância da classe KXmlParser
        KXmlParser parser = new KXmlParser();

        //seta como entrada do parser o InPutStreamReader in que contem o XML para a leitura
        parser.setInput(new InputStreamReader(in));

        //Posiciona na tag agenda
        parser.nextTag();
        
        //posiciona o parser na tag desejada, neste caso: agenda.
        parser.require(XmlPullParser.START_TAG, null, "mbresources");
       
        //Enquanto é diferente do final da tag
        while (parser.nextTag() != XmlPullParser.END_TAG) {
            //Posiciona na tag pessoa
            parser.require(XmlPullParser.START_TAG, null, "element");
            
            /*para cada pessoa encontrada é chamado o método
            parserPessoa para ler os seus elementos.*/
            parserXML(parser);

            //posiciona no final da tag pessoa
            parser.require(XmlPullParser.END_TAG, null, "element");
        }
        //posiciona no final da tag agenda
        parser.require(XmlPullParser.END_TAG, null, "mbresources");
    }
 private void parserXML(KXmlParser parser) throws Exception {
        //Enquanto é diferente de
        while (parser.nextTag() != XmlPullParser.END_TAG) {
            /*Posiciona no inicio de uma tag que esteja dentro da tag pessoa,
             * não importando quais os nomes das tags. Ex: nome ou fone */
            parser.require(XmlPullParser.START_TAG, null, null);

            //obtem o nome da tag
            String name = parser.getName();

            //obtem o texto da tag
            String text = parser.nextText();
            System.out.println("Tag: " + name + " -> " + text);


            //Posiciona no fim da tag fone ou nome
            parser.require(XmlPullParser.END_TAG, null, name);
        }
    }

4 Respostas

diogofabri

NINGUEM???

P

Não dê UP no seu post, aqui não é o Orkut.
Aguarde sua vez que um dia ela chega.

http://www.guj.com.br/posts/list/220815.java#1129502

diogofabri

Gentil como sempre né boone!! haha…

Isso que vc me passou que ta parencendo orkut!!!

diogofabri

SOLUCIONADO
Para quem estiver com a mesma duvida acesse o link: http://www.forum.nokia.com/info/sw.nokia.com/id/d42eb404-ccf1-412a-88b7-f21cbacf067e/A_Brief_Introduction_to_XML_Parsing_in_MIDlets_v1_0.pdf.html

=)

Criado 5 de outubro de 2010
Ultima resposta 12 de out. de 2010
Respostas 4
Participantes 2