Trabalho com XML em Java: bibliotecas e ferramentas para parsing

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com XML em Java: visão geral de bibliotecas e ferramentas

XML (eXtensible Markup Language) continua sendo um dos principais formatos para armazenamento e transmissão de dados estruturados em aplicações corporativas, serviços web e arquivos de configuração. Java oferece um rico conjunto de bibliotecas nativas e de terceiros para trabalhar com XML. Neste artigo, abordaremos detalhadamente as principais ferramentas, suas características e exemplos de uso.



APIs nativas para trabalho com XML

A biblioteca padrão do Java (Java SE) inclui três APIs principais para parsing e processamento de XML:



1. DOM (Document Object Model)

DOM é uma API que carrega todo o documento XML na memória como uma estrutura em árvore. Isso é conveniente para acesso aleatório a elementos, mas requer muitos recursos ao lidar com arquivos grandes.

Quando usar: quando for necessário modificar frequentemente o documento ou realizar consultas complexas à sua estrutura.



import javax.xml.parsers.*;import org.w3c.dom.*;

public class DomExample { public static void main(String[] args) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse("data.xml");

NodeList books = doc.getElementsByTagName("book"); for (int i = 0; i < books.getLength(); i++) { Element book = (Element) books.item(i); String title = book.getElementsByTagName("title").item(0).getTextContent(); System.out.println("Livro: " + title); } }}


2. SAX (Simple API for XML)

SAX é um parser orientado a eventos. Ele lê o documento sequencialmente e chama métodos manipuladores ao encontrar tags, atributos ou texto. Não cria uma árvore na memória, sendo ideal para arquivos grandes.

Quando usar: para processamento em fluxo de arquivos XML enormes (por exemplo, logs ou dados de exportação).



import org.xml.sax.*;import org.xml.sax.helpers.*;import javax.xml.parsers.*;

public class SaxExample extends DefaultHandler { public void startElement(String uri, String localName, String qName, Attributes attrs) { if ("book".equals(qName)) { System.out.println("Livro encontrado com id: " + attrs.getValue("id")); } }

public static void main(String[] args) throws Exception { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); parser.parse("data.xml", new SaxExample()); }}


3. StAX (Streaming API for XML)

StAX é um parser de fluxo do tipo pull. Diferente do SAX, onde os eventos são "empurrados" para o manipulador, o StAX permite que o programa solicite o próximo elemento (modelo pull). Isso oferece mais controle sobre o processo de parsing.

Quando usar: quando for necessária a flexibilidade do SAX, mas com a possibilidade de pausar e retomar a leitura.



import javax.xml.stream.*;

public class StaxExample { public static void main(String[] args) throws Exception { XMLInputFactory factory = XMLInputFactory.newInstance(); XMLStreamReader reader = factory.createXMLStreamReader( new java.io.FileInputStream("data.xml"));

while (reader.hasNext()) { int event = reader.next(); if (event == XMLStreamConstants.START_ELEMENT && "title".equals(reader.getLocalName())) { System.out.println("Título: " + reader.getElementText()); } } reader.close(); }}


Vinculação de XML com objetos Java: JAXB

JAXB (Java Architecture for XML Binding) é uma API padrão para converter XML em objetos Java e vice-versa (marshalling/unmarshalling). Por

Recommendations