Ao ler um arquivo XML você pode utilizar duas maneiras, SAX e a DOM.
A SAX é prove uma forma direta de acessar elementos de um XML por seu identificador e não requer leitura de uma hierarquia para isso. Diferente da SAX, a DOM é uma maneira de ler o XML também, mas por meio de uma hierarquia.
No entanto, este artigo apresenta um exemplo de leitura de XML via SAX na linguagem Java.
Documento XML
Crie o arquivo cesta.xml. No exemplo, este arquivo foi criado no diretório c:\temp. Preencha com o conteúdo a seguir:
<cesta loja="Papelex">
<caneta>Caneta BIC</caneta>
<caneta>Caneta Kilometrica</caneta>
<caneta>Caneta Faber</caneta>
<caneta>Caneta Helios</caneta>
<caneta>Caneta Ferrari</caneta>
<caneta>Caneta Pentec</caneta>
<lapis>Caneta BIC</lapis>
<lapis>Caneta Kilometrica</lapis>
<lapis>Caneta Faber</lapis>
<lapis>Caneta Helios</lapis>
<lapis>Caneta Ferrari</lapis>
<lapis>Caneta Pentec</lapis>
</cesta>
Classe de leitura do XML
Crie a classe de leitura do XML chamada TestaXML.java.
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
public class TestaXML {
public static void main(String[] args) throws JDOMException, IOException {
File f = new File("c:/temp/cesta.xml");
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(f);
Element cesta = doc.getRootElement();
System.out.println("CESTA:");
System.out.println("Loja: " + cesta.getAttributeValue("loja"));
System.out.println("-------------------------------------------------");
List<Element> canetas = cesta.getChildren("caneta");
for (int i = 0; i < canetas.size(); i++) {
Element caneta = canetas.get(i);
System.out.println("CANETA:");
System.out.println("Modelo: " + caneta.getValue());
}
System.out.println("-------------------------------------------------");
List<Element> lapis = cesta.getChildren("lapis");
for (int i = 0; i < lapis.size(); i++) {
Element umLapis = lapis.get(i);
System.out.println("LÁPIS:");
System.out.println("Modelo: " + umLapis.getValue());
}
System.out.println("-------------------------------------------------");
}
}
Observe que entre as tags <cesta> e </cesta>, foram colocadas tags <caneta> e <lapis> muitas vezes. Logo, foram acessadas separadamente os elementos do tipo caneta e lápis pela função getChildren.
Nenhum comentário:
Postar um comentário