Ola Pessoal!
Como faço para ler um arquivo xml e jogar suas informações na tela?
Desde já agradeço
Ola Pessoal!
Como faço para ler um arquivo xml e jogar suas informações na tela?
Desde já agradeço
No fórum isso já foi bastante discutido.
Aconselho ler sobre XStream, JDOM e por ai vai.
Olha vou postar aqui um classe que criei especifica para o meu problema, ela le todo o arquivo XML recursivamente e vai preenchendo uma lista com os elementos encontrados, me deu um trabalhão pra fazer. vai ate o www.jdom.org e baixe a API deles adicione no seu projeto, depois tente compilar
package leitura;
import principal.ItemXml;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
/**
* Classe responsavel por ler um arquivo XML especifico
* @author maiko
*/
public class LeitorXML {
private File arquivo = null;
private SAXBuilder saxBuilder;
private Document documento;
private Vector lista;
private static final String POSICAO_TAMANHO = "posicao_tamanho";
private static final String CONFIDENCIAL = "confidencial";
private static final String CARTAO = "cartao";
/**
* Instancia a classe, e um arquivo XML é criado a partir do nome passado
* @param caminhoArquivo
* @throws org.jdom.JDOMException
* @throws java.io.IOException
*/
public LeitorXML(String caminhoArquivo) throws JDOMException, IOException {
saxBuilder = new SAXBuilder();
carregarNovoArquivo(caminhoArquivo);
lista = new Vector();
}
/**
* Instancia a classe, apartir de um arquivo ja criado
* @param aArquivo
* @throws org.jdom.JDOMException
* @throws java.io.IOException
*/
public LeitorXML(File aArquivo) throws JDOMException, IOException {
this.arquivo = aArquivo;
saxBuilder = new SAXBuilder();
lista = new Vector();
documento = saxBuilder.build(arquivo);
}
/**
* Metodo utilizado para substituir o arquivo criado/passado anteriormente
* @param caminhoArquivo
* @throws org.jdom.JDOMException
* @throws java.io.IOException
*/
public void carregarNovoArquivo(String caminhoArquivo) throws JDOMException,
IOException {
arquivo = new File(caminhoArquivo);
documento = saxBuilder.build(arquivo);
}
/**
* Obtem o principal elemento do documento
* @return o elemento
*/
public Element getElementoRoot() {
return documento.getRootElement();
}
/**
* Preenche a lista de maneira ordenada e cronologica a partir do arquivo XML lido,
* este metodo é recursivo
* @param nodoPai a partir de qual nodo é pra começar a ler
*/
private void percorreArvore(Element nodoPai) {
// Verifica se o nodo passado possui filhos
if (nodoPai.getChildren().size() > 0) {
// instancia uma lista a partir de seus filhos
List filhos = nodoPai.getChildren();
Iterator i = filhos.iterator();
// enquanto houver filhos
while (i.hasNext()) {
// O filho é tratado
Element nodoFilho = (Element) i.next();
// é pego seu nome, nome do pai, e determinado atributos para controle
ItemXml item = new ItemXml(null, nodoFilho.getName(),
nodoFilho.getParentElement().getName(),
nodoFilho.getAttributeValue(POSICAO_TAMANHO),
nodoFilho.getAttributeValue(CONFIDENCIAL),
nodoFilho.getAttributeValue(CARTAO));
// verifica se o nodo filho é um pai
if (nodoFilho.getChildren().size() > 0) {
// se for, ele é adicionado com o valor null
lista.add(item);
// e é chamado o mesmo metodo para percorrer cada um de seus filhos
percorreArvore(nodoFilho);
} else {
// caso ele nao possua filhos entao é pego seu valor
item.valor = nodoFilho.getValue();
// e é adiciona a lista
lista.add(item);
}
}
}
}
/**
* Obtem os elementos de determinado nodo
* @param nodoPrincipal
* @return uma lista com os elementos
*/
public Vector getElementos(Element nodoPrincipal) {
lista.clear();
percorreArvore(nodoPrincipal);
return lista;
}
/**
* Obtem os elementos a partir do elemento root do documento.
* @return Vector Lista representando todos os atributos do XML
*/
public Vector getElementos() {
lista.clear();
percorreArvore(getElementoRoot());
return lista;
}
}
Como eu disse isso é uma aplicacao especifica que procura por determinados atributos dentro da classe, mas esta parte você pode pular e analisar apenas a recursividade e a leitura do XML em si, que é bem fácil de se fazer.
Aqui mesmo no forum tem algun tutoriais basicos sobre isto.
abraço.