Skip to main content

কিভাবে এক্সকোড এক্সএমএল ফাইল পার্স

বি kategorijas vadīšanas eksāmena 1.etaps। Zināšanu সমাবস্থা transportlīdzekli pārbaude। (জুন 2026)

বি kategorijas vadīšanas eksāmena 1.etaps। Zināšanu সমাবস্থা transportlīdzekli pārbaude। (জুন 2026)
Anonim

অনেক অ্যাপ্লিকেশনের ব্যাকবোন যা একটি সহজ কাজ এক্সএমএল ফাইল পার্স করার ক্ষমতা। এবং সৌভাগ্যবশত, এক্সকোডটি উদ্দেশ্য-সি-তে একটি এক্সএমএল ফাইল বিশ্লেষণ করা তুলনামূলকভাবে সহজ করে তোলে।

একটি এক্সএমএল ফাইলটিতে আপনার অ্যাপ্লিকেশান সম্পর্কে একটি মৌলিক ডেটা থেকে কোনও ওয়েবসাইটের জন্য একটি RSS ফিড থাকতে পারে। তারা আপনার অ্যাপের মধ্যে দূরবর্তী অবস্থানের তথ্য আপডেট করার একটি দুর্দান্ত উপায়ও হতে পারে, এভাবে অ্যাপলকে কেবল একটি তালিকাতে একটি নতুন আইটেম যোগ করার জন্য নতুন বাইনারি জমা দেওয়ার প্রয়োজনটি উপেক্ষা করে।

সুতরাং কিভাবে আমরা এক্সক্লুসিভ এক্সএমএল ফাইল প্রক্রিয়া করতে পারি? প্রক্রিয়াটি ব্যবহারযোগ্য ভেরিয়েবলগুলি শুরু করতে, XML প্যাসারার প্রক্রিয়া শুরু করা, যে প্রক্রিয়াটিকে একটি ফাইল প্রক্রিয়া করা, একটি পৃথক উপাদান শুরু করা, উপাদানটির মধ্যে অক্ষর (মান), একটি পৃথক উপাদান শেষ এবং শেষ পার্সিং প্রক্রিয়া।

এই উদাহরণে, আমরা এটি একটি নির্দিষ্ট ওয়েব ঠিকানা (URL) পাস করে ইন্টারনেট থেকে একটি ফাইল পার্স করা হবে।

আমরা হেডার ফাইল নির্মাণের সাথে শুরু করব। এটি আমাদের ফাইলটিকে বিশ্লেষণ করার জন্য সর্বনিম্ন প্রয়োজনীয়তা সহ একটি বিস্তারিত দেখুন কন্ট্রোলারের জন্য একটি খুব মৌলিক হেডার ফাইলের একটি উদাহরণ:

@ ইন্টেরফেস রুটভিউ কন্ট্রোলার: UITableViewController {DetailViewController * বিস্তারিত ভিউ কন্ট্রোলার;NSXMLParser * rssParser;NSMutableArray * নিবন্ধসমূহ;NSMutableDictionary * আইটেম;NSString * বর্তমানকরণ;NSMutableString * এলিমেন্ট ভ্যালু;BOOL ত্রুটি পার্সিং;}@property (nonatomic, retain) আইবিওটলেট বিস্তারিতভিউ কন্ট্রোলার * বিস্তারিত ভিউ কন্ট্রোলার;- (অকার্যকর) parseXMLFileAtURL: (NSString *) URL;ParseXMLFileAtURL ফাংশন আমাদের জন্য প্রক্রিয়া শুরু করবে। এটি শেষ হলে, NSMutableArray "নিবন্ধগুলি" আমাদের ডেটা ধরে রাখবে। অ্যারে এক্সএমএল ফাইলের ক্ষেত্রের নামগুলির সাথে সম্পর্কিত কীগুলির সাথে পরিবর্তনযোগ্য অভিধান তৈরি করা হবে।

এখন আমরা প্রয়োজনীয় ভেরিয়েবল সেট আপ করেছি, আমরা .m ফাইলের প্রসেসের সাথে মিলতে যাব:

- (অকার্যকর) পার্সারডডিস্টার্টডকুমেন্ট: (NSXMLParser *) পার্সার {এনএসএলগগ (@ "ফাইল পাওয়া যায় এবং প্যারিসিং শুরু হয়েছে");}

এই ফাংশন প্রক্রিয়া শুরুতে রান। এই ফাংশনে কিছু করার দরকার নেই, তবে যদি ফাইলটি পার্স করা শুরু হয়ে গেলে আপনি কোনও কাজ সম্পাদন করতে চান তবে এটিই আপনার কোডটি রাখবে।

- (অকার্যকর) parseXMLFileAtURL: (NSString *) URL{NSString * এজেন্ট স্ট্রিং = @ "মজিলা / 5.0 (ম্যাকিনটোস; ইউ; ইন্টেল ম্যাক ওএস এক্স 10_5_6; ই-আমাদের) অ্যাপলওয়েবকিট / 525.27.1 (কেএটিএমএল, গেকো) সংস্করণ / 3.2.1 সাফারি / 525.27.1";NSMutableURLRequest * অনুরোধ = NSMutableURLRequest অনুরোধ WithURL:NSURL URLWithString: URL;অনুরোধ সেট Value: এজেন্ট স্ট্রিং জন্য HTTPHeaderField: @ "ব্যবহারকারী-এজেন্ট";xmlFile = NSURLConnection প্রেরণ করুন সমৃদ্ধমূল্য: অনুরোধ প্রত্যাবর্তন প্রতিক্রিয়া: nil ত্রুটি: nil;নিবন্ধ = NSMutableArray alloc init;errorParsing = না;rssParser = NSXMLParser alloc initWithData: xmlfile;RssParser সেট ডিলেজিট: স্ব;// আপনি যে XML ফাইলটি পার্স করছেন সেটির উপর নির্ভর করে আপনাকে এটির কিছু পরিবর্তন করতে হবেrssParser setShouldProcessNamespaces: NO;rssParser setShouldReportNamespace প্রতিক্রিয়া: না;rssParser setShouldResolveExternalEntities: NO;RssParser পার্স;}

এই ফাংশনটি একটি নির্দিষ্ট ওয়েব ঠিকানায় (URL) একটি ফাইল ডাউনলোড করার জন্য ইঞ্জিনকে নির্দেশ করে এবং এটি বিশ্লেষণ করার প্রক্রিয়াটি শুরু করে। আমরা রিমোট সার্ভারকে বলছি যে সার্ভারটি মোবাইল সংস্করণে আইফোন / আইপ্যাড পুনঃনির্দেশ করার চেষ্টা করলেই ম্যাকের উপর চলমান একটি সাফারি।শেষে বিকল্প নির্দিষ্ট এক্সএমএল ফাইল নির্দিষ্ট। অধিকাংশ আরএসএস ফাইল এবং জেনেরিক এক্সএমএল ফাইল চালু তাদের প্রয়োজন হবে না।

- (অকার্যকর) প্যাসারার: ​​(NSXMLParser *) পার্সার পার্স ইয়ার্রোরেকর্ড: (এনএসইআরআরআর *) পার্স ইয়ারর {NSString * ত্রুটি স্ট্রিং = NSString স্ট্রিং উইথফরম্যাট: @ "ত্রুটি কোড% i", পার্স ইরেকর কোড;এনএসএলগগ (@ "এক্সএমএল এক্সপ্রেস ত্রুটি:% @", ত্রুটি স্ট্রিং);errorParsing = হ্যাঁ;}এটি একটি সহজ ত্রুটি-পরীক্ষণ রাউটিং যা একটি ত্রুটির সম্মুখীন হলে বাইনারি মান সেট করবে। আপনি কি করছেন তার উপর নির্ভর করে এখানে আরো নির্দিষ্ট কিছু প্রয়োজন হতে পারে। ত্রুটির ক্ষেত্রে প্রক্রিয়াকরণের পরে আপনাকে কেবল কিছু কোড চালানোর দরকার হলে ত্রুটি-বিচ্যুতি বাইনারি পরিবর্তনশীলটি সেই সময়ে বলা যেতে পারে।

- (অকার্যকর) পার্সার: (NSXMLParser *) পার্সার করেছেনস্টার্টএলমেন্ট: (NSString *) উপাদান নাম নামস্থান: (NSString *) নামস্থানপুরি যোগ্যতাসম্পন্ন নাম: (NSString *) qName বৈশিষ্ট্য: (NSDictionary *) বৈশিষ্ট্যটি {currentElement = উপাদান নাম কপি;ElementValue = NSMutableString Alloc init;যদি (elementName isEqualToString: @ "আইটেম" {আইটেম = NSMutableDictionary alloc init;}} এক্সএমএল প্যাসারের মাংসের মধ্যে তিনটি ফাংশন রয়েছে, যেটি একটি পৃথক উপাদানটির শুরুতে চালিত হয়, যা উপাদানটি পার্সিংয়ের মাঝামাঝি সময়ে চলমান এবং যেটি উপাদানটির শেষে চলে।

এই উদাহরণের জন্য, আমরা আরএসএস ফাইলগুলির অনুরূপ একটি ফাইল বিশ্লেষণ করব যা XML ফাইলের মধ্যে "আইটেম" শীর্ষক শিরোনামগুলির অধীনে গোষ্ঠীগুলিতে উপাদানগুলি ভেঙে দেয়। প্রক্রিয়াকরণের শুরুতে, আমরা উপাদানটির নাম "আইটেম" চেক করছি এবং একটি নতুন গোষ্ঠী সনাক্ত করার সময় আমাদের আইটেম অভিধানটি বরাদ্দ করছি। অন্যথায়, আমরা মান জন্য আমাদের পরিবর্তনশীল আরম্ভ।

- (অকার্যকর) পার্সার: (NSXMLParser *) পার্সার পাওয়া গেছে Characters: (NSString *) স্ট্রিং {ElementValue appendString: স্ট্রিং;}

এটা সহজ অংশ। যখন আমরা অক্ষর খুঁজে পাই, তখন আমরা কেবল তাদের পরিবর্তনশীল "এলিমেন্ট ভ্যালু" এ যোগ করি।

- (অকার্যকর) পার্সার: (NSXMLParser *) পার্সার করেছেন EndElement: (NSString *) উপাদান নাম নামস্থান: (NSString *) নামস্থানপুরি যোগ্যতাসম্পন্ন নাম: (NSString *) qName {যদি (elementName isEqualToString: @ "আইটেম" {নিবন্ধ addObject: আইটেম কপি;} অন্য {আইটেম সেটObject: ElementValue forKey: elementName;}}

যখন আমরা একটি উপাদান প্রক্রিয়াকরণ শেষ করেছি, আমাদের দুটি জিনিস করতে হবে: (1) যদি শেষ উপাদানটি "আইটেম" হয় তবে আমরা আমাদের গোষ্ঠীটি শেষ করেছি, তাই আমরা আমাদের অভিধানকে আমাদের অ্যারেতে যুক্ত করব "। অথবা (2) উপাদানটি "আইটেম" না হলে আমরা উপাদানটির নামের সাথে মেলে এমন একটি কী দিয়ে আমাদের অভিধানে মান সেট করব। (এর অর্থ হল আমরা এক্সএমএল ফাইলের প্রতিটি ক্ষেত্রের জন্য একটি পৃথক পরিবর্তনশীলের প্রয়োজন নেই। আমরা তাদের আরও গতিশীলভাবে প্রক্রিয়া করতে পারি।)

- (অকার্যকর) পার্সারডিড এন্ডডকুমেন্ট: (NSXMLParser *) পার্সার {যদি (errorParsing == NO){NSLog (@ "এক্সএমএল প্রক্রিয়াকরণ সম্পন্ন!");} অন্য {NSLog (@ "এক্সএমএল প্রক্রিয়াকরণের সময় ত্রুটি ঘটেছে");}}

এই আমাদের পার্সিং রুটিন জন্য প্রয়োজন শেষ ফাংশন। এটা কেবল ডকুমেন্ট শেষ। আপনি যে কোনও কোডটি এখানে দিতে চান যা আপনি এখানে প্রক্রিয়াটি শেষ করতে চান না বা ত্রুটিটির ক্ষেত্রে আপনি যা করতে চান তা বিশেষ করে।

ডিভাইসে একটি ফাইলে ডেটা এবং / বা XML ফাইল সংরক্ষণ করার জন্য এখানে অনেকগুলি অ্যাপ্লিকেশনগুলি করতে চান এমন একটি জিনিস। এইভাবে, যদি ব্যবহারকারী ইন্টারনেটের সাথে সংযুক্ত না হয় তবে পরের বার তারা অ্যাপ্লিকেশনটি লোড করবে, তারা এখনও এই তথ্য পেতে পারে।

অবশ্যই, আমরা সবচেয়ে গুরুত্বপূর্ণ অংশটি ভুলে যাব না: ফাইলটি পার্স করার জন্য আপনার অ্যাপ্লিকেশনটি বলার (এবং এটিকে এটির জন্য এটি একটি ওয়েব ঠিকানা দিন!)।

প্রক্রিয়াটি শুরু করার জন্য, আপনাকে কেবলমাত্র এই কোডটির লাইনটিকে যথাযথ স্থানে যুক্ত করতে হবে যেখানে আপনি এক্সএমএল প্রসেসিং করতে চান:

স্ব parseXMLFileAtURL: @ "http://www.webaddress.com/file.xml";