Ler XML

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