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"]} पुस्तकालय में भी
TypeScript में इमेज प्रोसेसिंग: Sharp और Jimp से resize और crop
Colly Go: पूर्ण गाइड, उदाहरण और उपयोग | PythonLib
NodaTime C# (.NET) पूर्ण गाइड: उदाहरण और उपयोग
जावास्क्रिप्ट (Node.js) में रेट लिमिटिंग: express-rate-limit लाइब्रेरी के लिए पूर्ण गाइड
TypeScript में ऑब्जेक्ट्स का सीरियलाइज़ेशन: एक संपूर्ण गाइड