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

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

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

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

Swift (iOS/macOS) में XML के साथ कार्य



XML (Extensible Markup Language) डेटा आदान-प्रदान, कॉन्फ़िगरेशन फ़ाइलों और संरचित जानकारी के भंडारण के लिए एक लोकप्रिय प्रारूप बना हुआ है। Apple पारिस्थितिकी तंत्र (iOS, macOS, watchOS, tvOS) में, Foundation में निर्मित उपकरण XML के साथ कार्य करने के लिए दो मुख्य दृष्टिकोण प्रदान करते हैं: स्ट्रीम पार्सिंग (SAX-जैसा) XMLParser के साथ और ट्री-आधारित DOM दृष्टिकोण XMLDocument के माध्यम से (macOS पर उपलब्ध)। इस लेख में, हम दोनों विधियों का विस्तार से विश्लेषण करेंगे, व्यावहारिक उदाहरण देंगे और सामान्य उपयोग परिदृश्यों पर विचार करेंगे।



1. XMLParser के साथ स्ट्रीम पार्सिंग



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



RSS फ़ीड पार्स करने का मूल उदाहरण



import Foundation

// 1. डेलिगेट क्लास बनाएँclass RSSParserDelegate: NSObject, XMLParserDelegate { var currentElement = "" var currentTitle = "" var currentLink = "" var items: [(title: String, link: String)] = [] // टैग खुलने पर कॉल होता है func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) { currentElement = elementName if elementName == "item" { currentTitle = "" currentLink = "" } } // टेक्स्ट सामग्री मिलने पर कॉल होता है func parser(_ parser: XMLParser, foundCharacters string: String) { switch currentElement { case "title": currentTitle += string case "link": currentLink += string default: break } } // टैग बंद होने पर कॉल होता है func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { if elementName == "item" { items.append((title: currentTitle.trimmingCharacters(in: .whitespacesAndNewlines), link: currentLink.trimmingCharacters(in: .whitespacesAndNewlines))) } }}

// 2. उपयोगlet xmlString = """<rss> <channel> <item> <title>Swift 5.9 Features</title> <link>https://example.com/swift-5-9</link> </item> </channel></rss>"""

guard let data = xmlString.data(using: .utf8) else { fatalError() }let parser = XMLParser(data: data)let delegate = RSSParserDelegate()parser.delegate = delegate

if parser.parse() { for item in delegate.items { print("Title: \\(item.title), Link: \\(item.link)") }} else { print("Parse error: \\(parser.parserError?.localizedDescription ?? "unknown")")}


2. ट्री मॉडल: XMLDocument (केवल macOS)



macOS पर (और macOS मोड में Foundation फ्रेमवर्क के साथ Swift Package Manager का उपयोग करने वाले ऐप्स में), XMLDocument क्लास उपलब्ध है, जो XMLNode से विरासत प्राप्त करता है। यह पूरे XML को मेमोरी में लोड करने और इसे एक ट्री के रूप में हेरफेर करने की अनुमति देता है। यह छोटे दस्तावेज़ों के लिए सुविधाजनक है जब नोड्स तक यादृच्छिक पहुँच की आवश्यकता होती है।



XML दस्तावेज़ बनाना और संशोधित करना



import Foundation

// रूट एलिमेंट बनाएँlet rootElement = XMLElement(name: "catalog")let document = XMLDocument(rootElement: rootElement)

// विशेषता के साथ चाइल्ड एलिमेंट जोड़ेंlet book = XMLElement(name: "book")book.addAttribute(XMLNode.attribute(withName: "id", stringValue: "101") as! XMLNode)let title = XMLElement(name: "title", stringValue: "Swift Programming")let author = XMLElement(name: "author", stringValu

अनुशंसाएँ