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レイアウトファイルのような)で引き続き広く使われています。

Kotlin/Javaの組み込み機能以外にも、Simple XML SerializationやJackson XMLモジュールのようなXML処理のための様々なライブラリやAPIがあります。しかし、javax.xml.parsersjavax.xml.transformは通常、外部依存関係を追加することなくほとんどのニーズに対応します。

KotlinでXMLを扱う場合、キーとなる実装の詳細には、文字エンコーディングを適切に処理することや、XMLインジェクション攻撃を防ぐためにXMLエンティティを管理することが含まれます。XMLを解析する際には、データの整合性を確保するために名前空間の複雑さとスキーマ検証に注意してください。

参照