PHpullh

KOTLIN · 파일/IO

XML 파싱

Java의 XML 라이브러리를 Kotlin에서 활용하여 XML 문서를 파싱하고 생성합니다.

파일/IO중급xmldomparsingjava-interop

핵심 설명

Java의 XML 라이브러리를 Kotlin에서 활용하여 XML 문서를 파싱하고 생성합니다.

Kotlin code

import javax.xml.parsers.DocumentBuilderFactory
import org.xml.sax.InputSource
import java.io.StringReader

fun main() {
    val xml = """
        <users>
            <user id="1">
                <name>김철수</name>
                <email>kim@test.com</email>
            </user>
            <user id="2">
                <name>이영희</name>
                <email>lee@test.com</email>
            </user>
        </users>
    """.trimIndent()

    // DOM 파싱
    val factory = DocumentBuilderFactory.newInstance()
    val builder = factory.newDocumentBuilder()
    val doc = builder.parse(InputSource(StringReader(xml)))

    val users = doc.getElementsByTagName("user")
    for (i in 0 until users.length) {
        val node = users.item(i)
        val id = node.attributes.getNamedItem("id").textContent
        val name = (node as org.w3c.dom.Element)
            .getElementsByTagName("name").item(0).textContent
        val email = node
            .getElementsByTagName("email").item(0).textContent
        println("[$id] $name ($email)")
    }
}

학습 팁

간단한 XML에는 DOM이 적합하지만, 대용량 XML에는 SAX나 StAX 파서를 사용하면 메모리 효율적입니다.

주의할 점

XML 파싱 시 외부 엔티티(XXE) 공격에 취약할 수 있습니다. factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true)로 방지하세요.

자주 묻는 질문

XML 파싱란 무엇인가요?

Java의 XML 라이브러리를 Kotlin에서 활용하여 XML 문서를 파싱하고 생성합니다.

XML 파싱 학습 시 주의할 점은 무엇인가요?

XML 파싱 시 외부 엔티티(XXE) 공격에 취약할 수 있습니다. factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true) 로 방지하세요.