में पूर्ण डाउनलोड के इंतजार किए बिना भाग में एक एक्सएमएल फ़ाइल को पार्स करें IOS में, मैं डाउनलोड करते समय सर्वर से एक्सएमएल स्ट्रीम को पार्स करना चाहता हूं। इसे तब तक इंतजार नहीं करना चाहिए जब तक सर्वर एक्सएमएल का निर्माण नहीं कर लेता है और डाउनलोड पूरा हो जाता है। सर्वर एक्सएमएल को "भाग" में बनाता है और इसे सीधे क्लाइंट को भेजता है। मेरे ऐप में मेरे पास UITableView
है जो मुझे सर्वर से प्राप्त होने पर तुरंत XML के तत्वों को दिखाना चाहिए।स्विफ्ट
मैंने इसे XMLParser(contentsOf: URL)
कन्स्ट्रक्टर के साथ आजमाया है, लेकिन यह पहले पूरे एक्सएमएल को डाउनलोड करता है और फिर इसे पार करता है। एक और कन्स्ट्रक्टर XMLParser(stream: InputStream)
है, लेकिन मुझे नहीं पता कि InputStream
URLConnection
से कैसे प्राप्त करें। मुझे मिली एकमात्र चीज this question थी जो लगभग 5 वर्ष पुरानी है, और मुझे यह समझ में नहीं आया कि स्विफ्ट 3 में यह कैसे किया जाए, अगर यह भी काम करता है।
दूसरी चीज जो मैंने कोशिश की थी वह Libxml2 के माध्यम से थी, लेकिन वहां मुझे राम उपयोग या अन्य चीजों के साथ समस्याएं हैं (मेरा old question देखें)।
मैं स्विफ्ट में पूर्ण डाउनलोड के इंतजार किए बिना भाग में एक्सएमएल स्ट्रीम कैसे पार्स कर सकता हूं?
एंड्रॉयड में, मैं एक XMLPullParser
का उपयोग करें और होगा:
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoInput(true);
InputStream inputStream = connection.getInputStream();
XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance();
XmlPullParser pullParser = xmlFactoryObject.newPullParser();
pullParser.setInput(inputStream, null);
// here comes the actual parsing
मैंने आपके समाधान की कोशिश की, लेकिन डेटा शून्य है। मुझे किस पोर्ट का उपयोग करना चाहिए? एचटीटीपीएस के लिए 443? चूंकि मेरा एंडपॉइंट HTTPS का उपयोग करता है, यूआरएल इस तरह दिखता है: 'https: //www.example.com/api/query.php? Title = test' – ElegyD