Caros,
Estou com alguns problemas pra o seguinte casos, tenho um XML de exemplo
<lista>
<negocio>
<preco>43.5</preco>
<quantidade>1000</quantidade>
<data id_data="15/05/2012">
<time id_time="16:10">
<hora>primeira</hora>
<dia>2</dia>
</time>
</data>
</negocio>
<negocio>
<preco>44.1</preco>
<quantidade>700</quantidade>
<data id_data="16/05/2012">
<time id_time="16:20">
<hora>segunda</hora>
<dia>2</dia>
</time>
</data>
</negocio>
<negocio>
<preco>42.3</preco>
<quantidade>1200</quantidade>
<data id_data="17/05/2012">
<time id_time="16:11">
<hora>terceira</hora>
<dia>2</dia>
</time>
</data>
</negocio>
</lista>
e estou lendo ele no java com da seguinte maneira:
//Classe que imita o XML
public class ListaNegocio {
public double preco;
public int qtd;
public long time;
public int hora;
public int dia;
String data;
String texto;
public ListaNegocio(double preco, int qtd, int hora, int dia, String data, String texto)
{
this.preco = preco;
this.qtd = qtd;
//this.time = time;
this.hora = hora;
this.dia = dia;
this.data = data;
this.texto = texto;
}
}
public class ListaNegocioLer {
private String xmlPathname;
//Construtor que seta o caminho XML
public ListaNegocioLer (String path){
xmlPathname = path;
}
//le o XML carregando os dados dos usuários em um Vector.
//retorna o vector contendo os usuários cadastrados no XML.
public Vector lerNegocios() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse( xmlPathname );
Element elem = doc.getDocumentElement();
// pega todos os elementos usuario do XML
NodeList nl = elem.getElementsByTagName( "negocio" );
// prepara o vetor
Vector negocios = new Vector();
for( int i=0; i<nl.getLength(); i++ ) {
Element tagNegocio = (Element) nl.item( i );
// pega os dados cadastrado para o usuario atual
//Aqui eu tento pegar os atributos de um filho e neto, e não consigo.
String time_id = tagNegocio.getAttribute("id_time");
String data_id = tagNegocio.getAttribute("data_id");
//Fim da tentativa
double preco = Double.parseDouble(getChildTagValue(tagNegocio, "preco"));
int qtd = Integer.parseInt(getChildTagValue(tagNegocio, "quantidade"));
int hora = Integer.parseInt(getChildTagValue(tagNegocio, "hora"));
int dia = Integer.parseInt(getChildTagValue(tagNegocio, "dia"));
// cria uma nova instancia do UsuarioGuj com os dados do xml
ListaNegocio listaNegocio = new ListaNegocio(preco, qtd, hora, dia, data_id, time_id);
// adiciona o usuario na coleção (vector) de usuários do guj
negocios.addElement( listaNegocio );
}
return negocios;
}
private String getChildTagValue( Element elem, String tagName ) throws Exception {
NodeList children = elem.getElementsByTagName( tagName );
if( children == null )
return null;
Element child = (Element) children.item(0);
if( child == null )
return null;
return child.getFirstChild().getNodeValue();
}
}
E agora por ultimo a classe que chama tudo acima.
package leitor;
import java.util.Vector;
public class CadastroNegocio {
public CadastroNegocio() {
try {
// informe o caminho correto do seu arquivo xml
ListaNegocioLer reader = new ListaNegocioLer( "C:\\teste.xml" );
Vector negocios = reader.lerNegocios();
// imprime na tela os usuarios cadastrados
for( int i=0; i<negocios.size(); i++ ) {
ListaNegocio usuario = (ListaNegocio) negocios.get( i );
System.out.println( "Preço: " + usuario.preco );
System.out.println( "quantidade: " + usuario.qtd );
System.out.println( "hora: " + usuario.hora );
System.out.println( "dia: " + usuario.dia );
System.out.println( "data: " + usuario.data );
System.out.println( "time: " + usuario.texto );
}
} catch( Exception e ) {
e.printStackTrace();
}
}
public static void main( String[] args ) {
new CadastroNegocio();
}
}
Quem conhece o site viu q eu segui o tutorial do desse link http://www.guj.com.br/articles/22
Mas o que eu preciso é pegar os atributos id_data e id_time também e isso eu não estou conseguindo, alguém tem alguma ideia?