Ler Arquivo XML

JavaBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderemos como ler um arquivo XML usando Java. Usaremos um arquivo XML de exemplo para demonstrar a leitura do arquivo usando código Java. XML é uma linguagem de marcação (markup language) usada para armazenar e transportar dados.

Criar um arquivo XML de exemplo

Usaremos um arquivo XML de exemplo students.xml como exemplo. Ele contém alguns dados sobre estudantes e os leremos usando código Java.

Crie um novo arquivo chamado students.xml no diretório ~/project com o seguinte conteúdo:

<students>
    <student id="101">
        <Name>John</Name>
        <id>11001</id>
        <location>India</location>
    </student>
    <student id="102">
        <Name>Alex</Name>
        <id>11002</id>
        <location>Russia</location>
    </student>
    <student id="103">
        <Name>Rohan</Name>
        <id>11003</id>
        <location>USA</location>
    </student>
</students>

Importar as bibliotecas necessárias

Usaremos as seguintes bibliotecas para ler um arquivo XML usando código Java:

  • org.w3c.dom.*
  • javax.xml.parsers.*

Adicione as seguintes declarações no início do arquivo de código para importar as bibliotecas necessárias:

import org.w3c.dom.*;
import org.xml.sax.SAXException;
import javax.xml.parsers.*;
import java.io.*;

Analisar o arquivo XML

Crie uma nova classe Java chamada Main no diretório ~/project com o seguinte conteúdo:

public class Main {
    public static void main(String[] args) throws IOException, ParserConfigurationException, SAXException {
        DocumentBuilderFactory dBfactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = dBfactory.newDocumentBuilder();
        // Fetch XML File
        Document document = builder.parse(new File("students.xml"));
        document.getDocumentElement().normalize();
        //Get root node
        Element root = document.getDocumentElement();
        System.out.println(root.getNodeName());
        //Get all students
        NodeList nList = document.getElementsByTagName("student");
        System.out.println(".................................");
    }
}

Criamos uma instância do construtor (builder) e analisamos o arquivo XML usando o método parse. Depois disso, obtemos o elemento raiz do documento e o normalizamos, e então imprimimos seu nome. Em seguida, obtemos todos os estudantes usando o método getElementsByTagName e imprimimos um separador.

Extrair dados de cada elemento

Para extrair dados de cada elemento, iteraremos por cada tag do documento usando um loop. Para cada estudante, obteremos seus detalhes, como ID, Nome, Número de Matrícula (Roll No) e Localização.

Adicione o seguinte código dentro do loop:

Node node = nList.item(i);
System.out.println();    //Just a separator
if (node.getNodeType() == Node.ELEMENT_NODE) {
    //Print each student's detail
    Element element = (Element) node;
    System.out.println("Student id : " + element.getAttribute("id"));
    System.out.println("Name : " + element.getElementsByTagName("Name").item(0).getTextContent());
    System.out.println("Roll No : " + element.getElementsByTagName("id").item(0).getTextContent());
    System.out.println("Location : " + element.getElementsByTagName("location").item(0).getTextContent());
}

O código acima extrairá os dados de cada elemento do arquivo XML. Usando o método getAttribute, o ID de cada estudante é recuperado. Usando os métodos getElementsByTagName e getTextContent, o Nome, Número de Matrícula (Roll No) e Localização de cada estudante são recuperados.

Executar o código Java

Compile e execute o código no terminal:

javac Main.java && java Main

Você deverá ver a seguinte saída:

students
.................................

Student id : 101
Name : John
Roll No : 11001
Location : India

Student id : 102
Name : Alex
Roll No : 11002
Location : Russia

Student id : 103
Name : Rohan
Roll No : 11003
Location : USA

Resumo

Neste laboratório, aprendemos como ler um arquivo XML usando código Java. Aprendemos como importar as bibliotecas necessárias, analisar um arquivo XML, iterar por cada nó do elemento raiz e extrair dados de cada elemento. Você pode usar este conhecimento para ler qualquer arquivo XML usando Java e extrair dados dele.