Manipulando arquivos XML com o JDOM – Parte II – Lendo Arquivos

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (8)  (1)

Agora que você já sabe criar arquivos XML com a API do JDOM, como vimos na primeira parte, vamos desenvolver um exemplo de leitura do XML.

 

Agora que você já sabe criar arquivos XML com a API do JDOM, como vimos na primeira parte, vamos desenvolver um exemplo de leitura do XML utilizando o mesmo caso anterior. Abaixo você confere a estrutura do arquivo da primeira parte:

 

<Agenda>

<Contato id="">

<nome> </nome>

<telefone></telefone>

<endereco> </endereco>

<email> </email>

</Contato>

</Agenda>

 

Vamos utilizar um parser para analisar o XML. Este parser é o SAXBuilder, que será utilizado para processar a estrutura do documento para dentro de uma variável do tipo Document. O método utilizado para processar o XML é o build, que recebe como parâmetro o caminho do arquivo. Abaixo segue o código:

 

Document doc = null;

      SAXBuilder builder = new SAXBuilder();

 

      try {

            doc = builder.build("c:/arquivo.xml");

           

      } catch (Exception e) {

            e.printStackTrace();

      }

 

Agora que o documento já está processado, nós precisamos fazer uma iteração dos elementos a partir do root e exibi-los na tela. Abaixo segue o código:

 

Element agenda = doc.getRootElement();

 

Depois de selecionar o elemento root, vamos criar uma lista com os filhos do elemento root. A partir desta lista faremos a iteração e a recuperação dos elementos. Segue o código:

 

List<Element> lista = agenda.getChildren();

for (Element e: lista ){

      System.out.println("Contato: "+ e.getAttributeValue("id"));

      System.out.println("Nome: " + e.getChildText("nome"));

      System.out.println("Telefone: " + e.getChildText("telefone"));

      System.out.println("Endereço: " + e.getChildText("endereco"));

      System.out.println("E-mail: " + e.getChildText("email"));

                 

}

 

A saída fica da seguinte forma:

 

Contato: 0

Nome: Glaucio Guerra

Telefone: 123-456

Endereço: Av. Amaral Peixoto S/N

E-mail: glaucioguerra@gmail.com

Contato: 1

Nome: Glaucio Guerra

Telefone: 123-456

Endereço: Av. Amaral Peixoto S/N

E-mail: glaucioguerra@gmail.com

Contato: 2

Nome: Glaucio Guerra

Telefone: 123-456

Endereço: Av. Amaral Peixoto S/N

E-mail: glaucioguerra@gmail.com

Contato: 3

Nome: Glaucio Guerra

Telefone: 123-456

Endereço: Av. Amaral Peixoto S/N

E-mail: glaucioguerra@gmail.com

Contato: 4

Nome: Glaucio Guerra

Telefone: 123-456

Endereço: Av. Amaral Peixoto S/N

E-mail: glaucioguerra@gmail.com

 

Abaixo segue o código completo:

 

package br.com.artigos.jdom;

 

import java.util.List;

import org.jdom.Document;

import org.jdom.Element;

import org.jdom.input.SAXBuilder;

 

public class Main {

      @SuppressWarnings("unchecked")

      public static void main(String[] args) {

            Document doc = null;

            SAXBuilder builder = new SAXBuilder();

            try {

                  doc = builder.build("c:/arquivo.xml");

                 

            } catch (Exception e) {

                 

                  e.printStackTrace();

            }           

           

            Element agenda = doc.getRootElement();

            List<Element> lista = agenda.getChildren();

            for (Element e: lista ){

                  System.out.println("Contato: "+ e.getAttributeValue("id"));

                  System.out.println("Nome: " + e.getChildText("nome"));

                  System.out.println("Telefone: " + e.getChildText("telefone"));

                  System.out.println("Endereço: " + e.getChildText("endereco"));

                  System.out.println("E-mail: " + e.getChildText("email"));

                 

            }           

           

      }

 }

 

Como o valor de contato é um Atributo, a forma que temos para acessar este membro é diferente de todas as outras. De acordo com o exemplo acima, a função seria e.getAttributeValue() e não e.getChildText(). Outro item que deve ser observado são as exceções lançadas pelo build da classe SaxBuilder. No caso exibido, foi generalizada a Exception. No entanto, existem pelo menos duas exceções a serem tratadas de forma mais especifica: a IOException e a JDOMException.

 

Neste artigo você conferiu como criar e ler arquivos XML. Agora é só usar a sua criatividade para utilizar este formato que faz a diferença na hora de tramitar informações de forma clara, independentemente da plataforma, e personalizar as suas tags muito facilmente. Até a próxima.

 

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?