Kotlin में XML के साथ काम करना: पार्सिंग और निर्माण के लिए लाइब्रेरीज़ और टूल्स

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Kotlin में XML के साथ काम करना: लाइब्रेरीज़ और प्रैक्टिकल उदाहरण

JSON और YAML के बढ़ते उपयोग के बावजूद, XML अभी भी कॉर्पोरेट सिस्टम, कॉन्फ़िगरेशन फ़ाइलों, SOAP प्रोटोकॉल और Android डेवलपमेंट में एक महत्वपूर्ण फ़ॉर्मेट है। Kotlin, Java के साथ अपनी संगतता के कारण, XML के लिए सभी परिपक्व Java लाइब्रेरीज़ तक पहुँच प्रदान करता है, साथ ही इसके अपने नेटिव समाधान भी हैं। इस लेख में, हम Kotlin में XML प्रोसेसिंग के पाँच मुख्य दृष्टिकोणों को कवर करेंगे, जिसमें पार्सिंग, निर्माण और डॉक्यूमेंट वैलिडेशन शामिल हैं।

1. बिल्ट-इन टूल्स: DOM, SAX, StAX

Kotlin सीधे मानक Java API का उपयोग करता है। यह त्वरित कार्यों के लिए सबसे आसान तरीका है, लेकिन इसमें बहुत अधिक बॉयलरप्लेट कोड की आवश्यकता होती है।

DOM (Document Object Model)

पूरे XML को मेमोरी में लोड करता है और नोड्स तक मनमानी पहुँच प्रदान करता है। छोटे डॉक्यूमेंट के लिए उपयुक्त।

import javax.xml.parsers.DocumentBuilderFactory
import 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("पुस्तक: $title")
    }
}

SAX (Simple API for XML)

स्ट्रीम-आधारित पार्सर, पूरे डॉक्यूमेंट को मेमोरी में लोड नहीं करता। बड़ी फ़ाइलों के लिए कुशल, लेकिन इम्प्लीमेंटेशन जटिल है।

import org.xml.sax.helpers.DefaultHandler
import org.xml.sax.Attributes
import javax.xml.parsers.SAXParserFactory

class BookHandler : DefaultHandler() {
    override fun startElement(uri: String, localName: String, qName: String, attributes: Attributes) {
        if (qName == "book") {
            println("पुस्तक मिली जिसका id: ${attributes.getValue("id")}")
        }
    }
}

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

2. JDOM — Kotlin के लिए सुविधाजनक API

JDOM एक लोकप्रिय Java लाइब्रेरी है जो कलेक्शन और extension-फंक्शन के समर्थन के कारण Kotlin के साथ शानदार रूप से एकीकृत होती है। यह बिना जटिल फैक्ट्री के XML को पढ़ने, संशोधित करने और बनाने की अनुमति देता है।

पार्सिंग और नेविगेशन

import org.jdom2.input.SAXBuilder
import 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")
    }
}

शुरू से XML बनाना

import org.jdom2.Document
import org.jdom2.Element
import 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 — सरलता और सख्ती

XOM "immutable by default" सिद्धांत का पालन करता है — बनाने के बाद सभी नोड्स को बदला नहीं जा सकता, केवल बदला जा सकता है। यह कोड को पूर्वानुमानित और सुरक्षित बनाता है। लाइब्रेरी स्वचालित रूप से संरचना की शुद्धता की जाँच करती है।

import nu.xom.Builder
import nu.xom.Serializer

fun parseWithXOM(xml: String) {
    val builder = Builder()
    val doc = builder.build(xml, null)
    val root = doc.rootElement
    
    val books = root.getChildElements("book")
    for (i in 0 until books.size) {
        v                    

अनुशंसाएँ