Kotlin में XML के साथ कार्य: लाइब्रेरीज़ और कोड उदाहरण

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

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

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

Kotlin में XML के साथ कार्य: लाइब्रेरीज़ का अवलोकन और व्यावहारिक उदाहरण

\n\n

XML (eXtensible Markup Language) संरचित डेटा को संग्रहीत और स्थानांतरित करने के लिए प्रमुख प्रारूपों में से एक बना हुआ है। Kotlin भाषा में, जो JVM के ऊपर काम करती है, XML के साथ कार्य करने के लिए सभी Java लाइब्रेरीज़ उपलब्ध हैं, साथ ही कई मूल Kotlin समाधान भी। इस लेख में हम XML के साथ कार्य करने के तीन मुख्य दृष्टिकोणों पर विचार करेंगे: SimpleXML (एनोटेशन-आधारित पार्सिंग), XStream (तेज़ सीरियलाइज़ेशन) और kotlinx.serialization (मूल Kotlin लाइब्रेरी)।

\n\n

1. SimpleXML — एनोटेशन-आधारित XML पार्सिंग

\n\n

SimpleXML Java/Kotlin के लिए एक लोकप्रिय लाइब्रेरी है, जो एनोटेशन की मदद से XML को ऑब्जेक्ट में और वापस रूपांतरित करने की अनुमति देती है। यह तब आदर्श है जब XML की संरचना पहले से ज्ञात हो।

\n\n

कनेक्शन (Gradle):

\n
dependencies {\n    implementation("org.simpleframework:simple-xml:2.7.1")\n}\n
\n\n

उदाहरण: RSS फ़ीड का पार्सिंग

\n

मान लीजिए, हमारे पास समाचारों वाला XML है:

\n
<rss version="2.0">\n    <channel>\n        <item>\n            <title>समाचार 1</title>\n            <link>https://example.com/1</link>\n        </item>\n        <item>\n            <title>समाचार 2</title>\n            <link>https://example.com/2</link>\n        </item>\n    </channel>\n</rss>\n
\n\n

एनोटेशन के साथ डेटा मॉडल बनाएँ:

\n
import org.simpleframework.xml.*\n\n@Root(name = "rss", strict = false)\ndata class Rss(\n    @field:Element(name = "channel")\n    var channel: Channel? = null\n)\n\n@Root(name = "channel", strict = false)\ndata class Channel(\n    @field:ElementList(inline = true, entry = "item")\n    var items: List<Item> = emptyList()\n)\n\n@Root(name = "item", strict = false)\ndata class Item(\n    @field:Element(name = "title")\n    var title: String = "",\n\n    @field:Element(name = "link")\n    var link: String = ""\n)\n
\n\n

XML पार्सिंग:

\n
import org.simpleframework.xml.core.Persister\n\nfun parseRss(xmlString: String): Rss? {\n    return try {\n        val serializer = Persister()\n        serializer.read(Rss::class.java, xmlString)\n    } catch (e: Exception) {\n        println("पार्सिंग त्रुटि: ${e.message}")\n        null\n    }\n}\n\n// उपयोग:\nval xml = "<rss version=\\"2.0\\">...</rss>" // आपका XML\nval rss = parseRss(xml)\nrss?.channel?.items?.forEach { item ->\n    println("${item.title}: ${item.link}")\n}\n
\n\n

SimpleXML के लाभ: सरलता, इनहेरिटेंस समर्थन, तिथियों और संख्याओं के लिए अंतर्निहित कनवर्टर।

\n\n

2. XStream — तेज़ ऑब्जेक्ट सीरियलाइज़ेशन

\n\n

XStream एक और शक्तिशाली लाइब्रेरी है, जो बिना एनोटेशन के ऑब्जेक्ट को XML में सीरियलाइज़ कर सकती है। यह रिफ्लेक्शन का उपयोग करती है और प्रोटोटाइपिंग के लिए उपयुक्त है।

\n\n

कनेक्शन:

\n
dependencies {\n    implementation("com.thoughtworks.xstream:xstream:1.4.20")\n}\n
\n\n

उदाहरण: सीरियलाइज़ेशन और डीसीरियलाइज़ेशन

\n
import com.thoughtworks.xstream.XStream\n\ndata class Person(val name: String, val age: Int)\n\nfun main() {\n    val xstream = XStream()\n    xstream.alias("person", Person::class.java)\n\n    // सीरियलाइज़ेशन\n    val person = Person("इवान", 30)\n    val xml = xstream.toXML(person)\n    println(xml)\n    // आउटपुट: <person><name>इवान</name><age>30</age></person>\n\n    // डीसीरियलाइज़ेशन\n    val restored = xstream.fromXML(xml) as Person\n    println("नाम: ${restored.name}, आयु: ${restored.age}")\n}\n
\n\n

XStream की विशेषताएँ:

\n
    \n
  • एनोटेशन की आवश्यकता नहीं — "बॉक्स से बाहर" काम करता है
  • \n
  • कलेक्शन, ऐरे, नेस्टेड ऑब्जेक्ट का समर्थन करता है
  • \n
  • क्लास और फ़ील्ड के लिए उपनाम कॉन्फ़िगर किए जा सकते हैं
  • \n
  • ख

अनुशंसाएँ