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);
}
}