Trabalho com XML em Kotlin: bibliotecas e ferramentas para parsing e criação

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 Kotlin: visão geral das bibliotecas e exemplos práticos



Apesar da adoção ativa de JSON e YAML, o XML continua sendo um formato relevante em sistemas corporativos, arquivos de configuração, protocolos SOAP e desenvolvimento Android. Kotlin, sendo compatível com Java, fornece acesso a todas as bibliotecas Java maduras para trabalhar com XML, além de ter suas próprias soluções nativas. Neste artigo, abordaremos cinco abordagens principais para processamento de XML em Kotlin, incluindo parsing, criação e validação de documentos.



1. Ferramentas integradas: DOM, SAX, StAX

Kotlin usa diretamente a API Java padrão para XML. Esta é a maneira mais simples para tarefas rápidas, mas requer muito código boilerplate.



DOM (Document Object Model)

Carrega todo o XML na memória e permite acesso aleatório aos nós. Adequado para documentos pequenos.

import javax.xml.parsers.DocumentBuilderFactoryimport org.w3c.dom.Element

fun parseWithDOM(xml: String) { val factory = DocumentBuilderFactory.newInstance() val builder = factory.newDocumentBuilder() val doc = builder.parse(xml.byteInputStream()) val books = doc.getElementsByTagName("book") for (i in 0 until books.length) { val book = books.item(i) as Element val title = book.getElementsByTagName("title").item(0).textContent println("Livro: $title") }}


SAX (Simple API for XML)

Parser de fluxo, não carrega todo o documento na memória. Eficiente para arquivos grandes, mas complexo de implementar.

import org.xml.sax.helpers.DefaultHandlerimport org.xml.sax.Attributesimport javax.xml.parsers.SAXParserFactory

class BookHandler : DefaultHandler() { override fun startElement(uri: String, localName: String, qName: String, attributes: Attributes) { if (qName == "book") { println("Livro encontrado com id: ${attributes.getValue("id")}") } }}

fun parseWithSAX(xml: String) { val factory = SAXParserFactory.newInstance() val parser = factory.newSAXParser() parser.parse(xml.byteInputStream(), BookHandler())}


2. JDOM — API conveniente para Kotlin

JDOM é uma biblioteca Java popular que se integra perfeitamente com Kotlin graças ao suporte a coleções e funções de extensão. Permite ler, modificar e criar XML sem fábricas complexas.



Parsing e navegação

import org.jdom2.input.SAXBuilderimport org.jdom2.Element

fun parseWithJDOM(xml: String) { val builder = SAXBuilder() val doc = builder.build(xml.byteInputStream()) val root = doc.rootElement root.getChildren("book").forEach { book -> val title = book.getChildText("title") val author = book.getChildText("author") println("$title — $author") }}


Criação de XML do zero

import org.jdom2.Documentimport org.jdom2.Elementimport org.jdom2.output.XMLOutputter

fun createXML(): String { val root = Element("library") val book = Element("book").apply { setAttribute("id", "1") addContent(Element("title").setText("Kotlin in Action")) addContent(Element("author").setText("Dmitry Jemerov")) } root.addContent(book) val doc = Document(root) val outputter = XMLOutputter().apply { format = org.jdom2.output.Format.getPrettyFormat() } return outputter.outputString(doc)}


3. XOM — simplicidade e rigor

XOM segue o princípio "imutável por padrão" — todos os nós, após criados, não podem ser alterados, apenas substituídos. Isso torna o código previsível e seguro. A biblioteca verifica automaticamente a correção da estrutura.



import nu.xom.Builderimport nu.xom.Serializer

fun parseWithXOM(xml: String) { val builder = Builder() val doc = builder.build(xml, null) val root = doc.rootElement

Recommendations