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

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

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

তাই Xcode- এ এক্সএমএল ফাইলগুলি কীভাবে প্রয়োগ করা যায়? প্রোডাকশনটি ব্যবহার করার জন্য ভেরিয়েবল সূচনা করার জন্য পদক্ষেপগুলি রয়েছে, এক্সএমএল পার্সার প্রক্রিয়াকে শুরু করে, একটি ফাইল প্রক্রিয়াকরণ করে, একটি পৃথক উপাদান শুরু করে, উপাদানটির মধ্যে অক্ষরগুলি (মান) একটি পৃথক উপাদান শেষ, এবং পার্সিং প্রক্রিয়া শেষে।

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

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

@ ইন্টারফেস রুটভিউ কনট্রোলার: UITableViewController {
বিস্তারিত ভিউ কন্ট্রোলার * বিস্তারিত ভিউ কন্ট্রোলার;

NSXMLParser * rssprarser;
NSMutableArray * নিবন্ধ;
NSMutableDictionary * আইটেম;
NSString * বর্তমান এলেমেন্ট;
NSMutableString * ElementValue;
BOOL ত্রুটি পার্সিং;
}

@ প্রপার্টি (ননটোমিক, রক্ষণ) IBOutlet বিস্তারিত ভিউ কন্ট্রোলার * বিস্তারিত ভিউ কন্ট্রোলার;

- (অকার্যকর) parseXMLFileAtURL: (NSString *) URL;

ParseXMLFileAtURL ফাংশনটি আমাদের জন্য প্রক্রিয়া শুরু করবে। এটি শেষ হলে, NSMutableArray "নিবন্ধ" আমাদের ডেটা ধরে রাখবে। অ্যারেটি এক্সট্রাটেরিয়াল অভিধানের সাথে তৈরি করা হবে যা এক্সএমএল ফাইলের ক্ষেত্রের নামের সাথে সম্পর্কিত।

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

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

}

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

- (অকার্যকর) parseXMLFileAtURL: (NSString *) URL
{

NSString * agentString = @ "মোজিলা / 5.0 (ম্যাকিন্টোস; ইউ। ইন্টেল ম্যাক ওএস এক্স 10_5_6; এন-ইউ) অ্যাপল ওয়েবসট / 5২5২7.1 (কে.এইচ.এম.টি.এম., গেকো মত) সংস্করণ / 3.2.1 সাফারি / 5২5.২7.1";
NSMutableURL অনুরোধ * অনুরোধ = [NSMutableURL অনুরোধ অনুরোধwithURL:
[এনএস -URL URLWithString: URL]];
[অনুরোধ সেটমূল্য: এজেন্ট ফিগারের জন্য এইচটিটিপি হেডারফিল্ড: @ "ইউজার এজেন্ট"];
xmlFile = [এনএস-ইউআরএলও সংযোগ প্রেরণ করুন এসিনক্রোনাসআরইউইস্ট: রিটার্ণিং রিসপন্স: নীল ত্রুটি: নিল];


নিবন্ধগুলি = [[NSMutableArray alloc] init];
errorParsing = না;

rssParser = [[NSXMLParser alloc] initWithData: xmlFile];
[আরএসএসপ্রেসার সেট ডিয়ালিয়েট: স্ব];

// আপনি পার্সিং XML ফাইলের ধরন উপর নির্ভর করে এই কিছু চালু করতে হতে পারে
[আরএসএসপ্রেসার সেট শেলফ্রোসেসের নামস্থান: না];
[আরএসএসপ্রেসার সেট শৃঙ্খল রিপোর্টনমসপ্রেসপ্রিফিক্স: না];
[আরএসএসপ্রেসার সেট শিল্ড রেসোল্লে এক্সট্রাটেন্ট এন্টিটিস: না];

[আরএসএসপ্রেস পার্স];

}

এই ফাংশন একটি নির্দিষ্ট ওয়েব ঠিকানা (URL) এ একটি ফাইল ডাউনলোড করার জন্য ইঞ্জিনকে নির্দেশ দেয় এবং এটি প্যাড করার জন্য প্রক্রিয়া শুরু করে।

আমরা রিমোট সার্ভারকে বলছি যে আমরা ম্যাপে সফি চলমান থাকি, যদি সার্ভারটি একটি মোবাইল সংস্করণে আইফোন / আইপ্যাড পুনর্চালনার চেষ্টা করে।

শেষে কিছু বিকল্প নির্দিষ্ট এক্সএমএল ফাইলের জন্য নির্দিষ্ট। বেশিরভাগ আরএসএস ফাইল এবং জেনেরিক এক্সএমএল ফাইল তাদের চালু করতে হবে না।

- (অকার্যকর) পার্সার: (NSXMLParser *) পার্সার parseErrorOccurred: (NSError *) parseError {

NSString * errorString = [NSString stringWithFormat: @ "ত্রুটি কোড% i", [parseError কোড]];
NSLog (@ "এক্সটারিজিং এক্সেল এক্সিকিউটি:% @", ত্রুটি স্ট্রিং);


errorParsing = হ্যাঁ;
}

এটি একটি সহজ ত্রুটি-পরীক্ষা রাউটিং যা একটি বাইনারি মান সেট করবে যদি এটি একটি ত্রুটির সম্মুখীন হয়। আপনি কি করছেন উপর নির্ভর করে এখানে আরো নির্দিষ্ট কিছু প্রয়োজন হতে পারে। ত্রুটিের ক্ষেত্রে প্রক্রিয়াকরণের পরে যদি আপনি কিছু কোড চালানোর প্রয়োজন হয় তবে ত্রুটিপূর্ণ বাইনারি ভেরিয়েবলটি সেই সময়ে বলা যেতে পারে।

- (অকার্যকর) পার্সার: (এনএসএক্সএলএমএলপ্রেসার *) পার্সার স্ট্র্যাটএলেমেন্ট: (NSString *) উপাদান নাম নামপেসিআইআরআই: (NSString *) নামপ্রেসউইউরি যোগ্য নাম: (NSString *) qName বৈশিষ্ট্যাবলী: (এনএসএসএসপেনশন *) অ্যাট্রিবিউটডেক্ট {
currentElement = [elementName কপি];
ElementValue = [[NSMutableString alloc] init];
যদি ([উপাদানটি হল EQUALToString: @ "আইটেম"]) {
আইটেম = [[NSMutableDictionary alloc] init];

}

}

এক্সএমএল পার্সারের মাংসটিতে তিনটি ফাংশন রয়েছে, যেটি একটি পৃথক উপাদানের প্রারম্ভে চলছে, যেটি উপাদান প্যাডিংয়ের মধ্যবর্তী সময়ে সঞ্চালিত হয় এবং উপাদানটির শেষে রান করা হয়।

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

- (অকার্যকর) পার্সার: (এনএসএক্সএলএমএলএলপিয়ার *) পার্সার পাওয়া যায় চার্টার: (NSString *) স্ট্রিং {
[এলিমেন্ট ভ্যালু অ্যাডেন্ড স্ট্রিং: স্ট্রিং];
}

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

- (অকার্যকর) পার্সার: (এনএসএক্সএলএমএলপ্রেসার *) পার্সার এন্ড এলেমেন্ট: (NSString *) উপাদান নাম নামপেসিআইআরআই: (NSString *) নামপ্রেসউইউআর যোগ্য নাম: (NSString *) qName {
যদি ([উপাদানটি হল EQUALToString: @ "আইটেম"]) {
[নিবন্ধগুলি যুক্ত করুন: [আইটেম কপি]];
} অন্য {
[আইটেম setObject: ElementValue forKey: elementName];
}

}

যখন আমরা একটি উপাদান প্রক্রিয়া সম্পন্ন করেছি, তখন আমাদের দুইটি জিনিস এক করতে হবে: (1) শেষ উপাদান "আইটেম" হলে, আমরা আমাদের গ্রুপ শেষ করেছি, তাই আমরা আমাদের " "।

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

- (অকার্যকর) পসারডিডড ডকুমেন্ট: (NSXMLParser *) পার্সার {

যদি (errorParsing == না)
{
NSLog (@ "XML প্রক্রিয়াকরণ সম্পন্ন!");
} অন্য {
NSLog (@ "XML প্রক্রিয়াকরণের সময় ত্রুটি ঘটেছে");
}

}

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

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

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

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

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