Kotlin में XML के साथ कार्य: लाइब्रेरीज़, पार्सिंग और दस्तावेज़ निर्माण
XML (eXtensible Markup Language) संरचित डेटा के भंडारण और स्थानांतरण के लिए एक लोकप्रिय प्रारूप बना हुआ है, विशेष रूप से लीगेसी-सिस्टम, कॉन्फ़िगरेशन फ़ाइलों और वेब सेवाओं में। Kotlin, Java के साथ पूरी तरह से संगत होने के कारण, XML के साथ कार्य करने के लिए सभी क्लासिक Java लाइब्रेरीज़ तक पहुँच प्रदान करता है, साथ ही इसके मूल समाधान भी हैं। इस लेख में हम मुख्य दृष्टिकोणों पर चर्चा करेंगे: Kotlin में XML दस्तावेज़ों का पार्सिंग, निर्माण और सीरियलाइज़ेशन।
1. JDK के अंतर्निहित साधन: DOM, SAX, StAX
Java के साथ पूर्ण अंतर-संचालन क्षमता के कारण, Kotlin में सीधे मानक API का उपयोग किया जा सकता है:
- DOM (Document Object Model) — पूरे दस्तावेज़ को मेमोरी में लोड करता है, संशोधनों के लिए सुविधाजनक।
- SAX (Simple API for XML) — इवेंट-ओरिएंटेड पार्सर, न्यूनतम मेमोरी खपत।
- StAX (Streaming API for XML) — कर्सर या इवेंट दृष्टिकोण के साथ स्ट्रीमिंग पार्सर।
Kotlin में DOM का उपयोग करके XML पार्सिंग का उदाहरण:
import javax.xml.parsers.DocumentBuilderFactoryimport org.w3c.dom.Element
fun parseXmlWithDom(xmlString: String) { val factory = DocumentBuilderFactory.newInstance() val builder = factory.newDocumentBuilder() val document = builder.parse(xmlString.byteInputStream()) val root = document.documentElement
val items = root.getElementsByTagName("item") for (i in 0 until items.length) { val item = items.item(i) as Element val name = item.getElementsByTagName("name").item(0).textContent val price = item.getElementsByTagName("price").item(0).textContent println("Item: $name, Price: $price") }}2. Simple XML लाइब्रेरी (org.simpleframework.xml)
Simple XML — ऑब्जेक्ट्स को XML में सीरियलाइज़/डीसीरियलाइज़ करने के लिए एक लोकप्रिय लाइब्रेरी। यह एनोटेशन का उपयोग करती है और कॉन्फ़िगरेशन फ़ाइलों की आवश्यकता नहीं होती है। XML प्रतिक्रियाओं वाले REST API के लिए उपयुक्त है।
कनेक्शन (Gradle):
implementation("org.simpleframework:simple-xml:2.7.1")मॉडल और डीसीरियलाइज़ेशन का उदाहरण:
import org.simpleframework.xml.*import org.simpleframework.xml.core.Persister
@Root(name = "catalog")data class Catalog( @field:ElementList(inline = true) var books: List<Book> = emptyList())
@Root(name = "book")data class Book( @field:Element(name = "title") var title: String = "", @field:Element(name = "author") var author: String = "", @field:Attribute(name = "id") var id: Int = 0)
fun deserializeXml(xml: String): Catalog { val serializer = Persister() return serializer.read(Catalog::class.java, xml)}3. XML प्रारूप के साथ kotlinx.serialization
मल्टीप्लेटफ़ॉर्म प्रोजेक्ट्स (KMP) के लिए कस्टम XML प्रारूप के साथ kotlinx.serialization का उपयोग करना सुविधाजनक है। तृतीय-पक्ष एडेप्टर मौजूद हैं, उदाहरण के लिए kotlinx-serialization-xml (समुदाय द्वारा)।
nl.adaptivity.xmlutil लाइब्रेरी के साथ उदाहरण (JVM, JS, Native का समर्थन करता है):
import nl.adaptivity.xmlutil.serialization.XMLimport kotlinx.serialization.*
@Serializabledata class Person( val name: String, @XmlSerialName("age") val years: Int)
fun main() { val xml = XML { indent = 4 xmlDeclMode = XmlDeclMode.Auto } val person = Person("Alice", 30) val result = xml.encodeToString(Person.serializer(), person) println(result) // <Person> // <name>Alice</name> // <age>30</age> // </Person>}4. Kotlin में XPath और XSLT
जटिल मानदंडों के अनुसार डेटा चयन के लिए XPath का उपयोग करें। Kotlin में यह मानक Java क्लास javax.xml.xpath
पुस्तकालय में भी
अनुशंसाएँ