Bom dia
Alguém por acaso tem algum exemplo bem pratico de como ler um XML, seja passando em arquivo ou somente o conteudo do XML, e que eu posso fazer um for, while, enfim…para poder simplesmente ir lendo e pegando as tags que desejar?
Achei exemplos muito complexos, no meu caso seria algo bem mais simples!
Obrigado
Ve se o xstream não te atende. É uma das API’s mais fáceis:
http://xstream.codehaus.org/tutorial.html
eu Estou tentando esse exemplo aqui:
SAXBuilder builder = new SAXBuilder();
File xmlFile = new File("c:\\file.xml");
try {
Document document = (Document) builder.build(xmlFile);
Element rootNode = document.getRootElement();
List list = rootNode.getChildren("staff");
for (int i = 0; i < list.size(); i++) {
Element node = (Element) list.get(i);
System.out.println("First Name : " + node.getChildText("firstname"));
System.out.println("Last Name : " + node.getChildText("lastname"));
System.out.println("Nick Name : " + node.getChildText("nickname"));
System.out.println("Salary : " + node.getChildText("salary"));
}
} catch (IOException io) {
System.out.println(io.getMessage());
} catch (JDOMException jdomex) {
System.out.println(jdomex.getMessage());
}
}
Porém quando tento usar a linha
Element rootNode = document.getRootElement();
Simplesmente dá erro e pede para alterar para:
javax.swing.text.Element[] rootNode = document.getRootElement();
Fazendo isso, simplesmente não aparece mais o metodo getChildren():
rootNode.getChildren("staff");
Não sei pq isso ocorre!
Estou usando JDOM
Obrigado!
Tentei um exemplo com o XStream
minha classe que vai fazer a conversao XML - Lista
public void lerXML() {
try {
XStream xStream = new XStream(new Dom4JDriver());
xStream.alias("enderecos", ArrayList.class);
xStream.processAnnotations(Endereco.class);
BufferedReader input = new BufferedReader(new FileReader("/home/josivan/xml.xml"));
ArrayList<Endereco> enderecos = (ArrayList) xStream.fromXML(input);
input.close();
for (Endereco endereco : enderecos) {
System.out.println("Endereço: " + endereco.getRua() + " - " + endereco.getCidade());
}
} catch (IOException ex) {
ex.printStackTrace();
}
Classe do Endereço
@XStreamAlias("endereco")
public class Endereco {
private String rua;
private String cidade;
public String getRua() {
return rua;
}
public void setRua(String rua) {
this.rua = rua;
}
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
}
XML
<enderecos>
<endereco>
<rua>Rua abc</rua>
<cidade>Cuiaba</cidade>
</endereco>
<endereco>
<rua>Avenida São João</rua>
<cidade>Primavera do Leste</cidade>
</endereco>
</enderecos>
Ocorre o seguinte erro:
Alguém sabe pq??
Alguém sabe pq do erro? Ou algo que possa me ajudar?
Obrigado