Kotlin:
Робота з XML

Як це робити:

У Kotlin ви можете використовувати вбудовані javax.xml.parsers для парсингу:

import javax.xml.parsers.DocumentBuilderFactory
import org.w3c.dom.Document

fun parseXml(xmlData: String): Document {
    val dbFactory = DocumentBuilderFactory.newInstance()
    val dBuilder = dbFactory.newDocumentBuilder()
    return dBuilder.parse(xmlData.byteInputStream())
}

Для створення XML-документів можна використовувати javax.xml.transform:

import javax.xml.transform.TransformerFactory
import javax.xml.transform.dom.DOMSource
import javax.xml.transform.stream.StreamResult
import org.w3c.dom.Document
import java.io.StringWriter

fun convertDocumentToString(doc: Document): String {
    val transformer = TransformerFactory.newInstance().newTransformer()
    val result = StringWriter()
    transformer.transform(DOMSource(doc), StreamResult(result))
    return result.toString()
}

Приклад виводу для перетворення документа у рядок просто буде вашим XML-вмістом у форматі рядка.

Погляд углиб

XML був каменем спотикання у розробці вебу та програмного забезпечення з 90-х років, заслуживши визнання завдяки своїй читабельності та структурованій ієрархії. Хоча JSON набув популярності для веб-сервісів завдяки своїй простоті та меншому розміру повідомлень, XML залишається поширеним у корпоративному середовищі, веб-сервісах на основі SOAP та конфігураціях (наприклад, у файлах макету Android).

Є різні бібліотеки та API, крім вбудованих функцій Kotlin/Java для роботи з XML, такі як Simple XML Serialization та Jackson XML module. Але javax.xml.parsers та javax.xml.transform зазвичай задовольняють більшість потреб без додавання зовнішніх залежностей.

При роботі з XML у Kotlin ключові деталі реалізації включають належне вирішення проблем кодування символів і управління XML-ентітетами, щоб запобігти атакам через ін’єкцію XML. Будьте уважні до складностей простору імен та перевірки схеми під час аналізу XML, щоб забезпечити цілісність даних.

Дивіться також