Swift में XML के साथ कार्य: डेटा का पार्सिंग, निर्माण और प्रसंस्करण (iOS/macOS)

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

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

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

Swift में XML के साथ कार्य (iOS/macOS): पार्सिंग से निर्माण तक



XML (eXtensible Markup Language) का उपयोग लीगेसी-सिस्टम, वेब-सेवाओं (SOAP, RSS) और कॉन्फ़िगरेशन फ़ाइलों में जारी है। Swift में iOS/macOS के लिए सिंटैक्टिक शुगर वाली कोई अंतर्निहित लाइब्रेरी नहीं है, लेकिन एक शक्तिशाली XMLParser (SAX-पार्सर) है, साथ ही एक लोकप्रिय तृतीय-पक्ष लाइब्रेरी AEXML (DOM-दृष्टिकोण) भी है। इस लेख में हम दोनों दृष्टिकोणों पर चर्चा करेंगे।



1. अंतर्निहित XMLParser (SAX-दृष्टिकोण)



XMLParser Foundation से एक इवेंट-ओरिएंटेड (SAX) पार्सर है। यह पूरे दस्तावेज़ को मेमोरी में लोड नहीं करता, बल्कि तत्वों का सामना होने पर डेलिगेट विधियों को कॉल करता है। बड़ी फ़ाइलों के लिए आदर्श है।



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



import Foundation

class RSSParser: NSObject, XMLParserDelegate { private var currentElement = "" private var currentTitle = "" private var items: [String] = []

func parse(data: Data) -> [String] { let parser = XMLParser(data: data) parser.delegate = self parser.parse() return items }

// MARK: - XMLParserDelegate func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) { currentElement = elementName if elementName == "item" { currentTitle = "" } }

func parser(_ parser: XMLParser, foundCharacters string: String) { if currentElement == "title" { currentTitle += string } }

func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { if elementName == "title" && !currentTitle.isEmpty { items.append(currentTitle.trimmingCharacters(in: .whitespacesAndNewlines)) } }}

// उपयोगlet xmlString = """<rss> <channel> <item><title>Swift 6.0</title></item> <item><title>Xcode की नई सुविधाएँ</title></item> </channel></rss>"""if let data = xmlString.data(using: .utf8) { let parser = RSSParser() let titles = parser.parse(data: data) print(titles) // ["Swift 6.0", "Xcode की नई सुविधाएँ"]}


महत्वपूर्ण: foundCharacters एक टेक्स्ट नोड के लिए कई बार कॉल हो सकता है (विशेषकर सिरिलिक वर्णों के साथ)। हमेशा स्ट्रिंग को जमा करें, असाइन न करें।



2. AEXML — सुविधाजनक DOM-लाइब्रेरी



AEXML DOM शैली में XML के साथ कार्य करने के लिए एक हल्की लाइब्रेरी है। यह मैन्युअल इवेंट प्रबंधन के बिना XML को पढ़ने और बनाने की अनुमति देता है। इसे Swift Package Manager या CocoaPods के माध्यम से स्थापित किया जाता है।



Swift Package Manager के माध्यम से स्थापना

Package.swift में या Xcode के माध्यम से जोड़ें: File → Add Packages → URL दर्ज करें: https://github.com/tadija/AEXML.git



उदाहरण: XML पढ़ना



import AEXML

func parseWithAEXML(xmlString: String) -> [String: String]? { do { let xmlDoc = try AEXMLDocument(xml: xmlString) let root = xmlDoc.root

// तत्व का मान प्राप्त करें let name = root["user"]["name"].value ?? "" let age = root["user"]["age"].value ?? ""

// विशेषता द्वारा पहुँच let id = root["user"].attributes["id"] ?? ""

return ["id": id, "name": name, "age": age] } catch { print("पार्सिंग त्रुटि: \\(error)") return nil }}

// XML उदाहरणlet xmlData = """<root> <user id="42"> <name>इवान पेत्रोव</name> <age>30</age> </user></root>"""if let result = parseWithAEXML(xmlString: xmlData) { print(result) // ["id": "42", "name": "इवान पेत्रोव", "age": "30"]}

अनुशंसाएँ