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
Também na biblioteca
Cliente Redis Swift: RediStack para iOS/macOS
Cliente Elasticsearch para Java: guia completo de conexão e operação
Agendador de Tarefas em Node.js (node-cron, node-schedule, Bull)
Axios para JavaScript (Node.js): guia completo com exemplos
Trabalhando com Apache Kafka em Swift (iOS/macOS): bibliotecas e exemplos