په ایکسکوډ کې د ایکس ایم ایل دوتنې څنګه پرمخ وړل

یو ساده کار چې د ډیرو ایپسونو لپاره ریبډون دی د XML فایلونو پارس کولو توان لري. او، له نېکه مرغه، زوکوډ دا نسبتا اسانه کوي چې د اهداف سي C کې د XML فایل افشا کړي.

د ایکس ایم ایل فایل کېدای شي د خپل اپنټ په اړه د آر ایس ایس فیډ ته د ویب پاڼې لپاره د اساسي معلوماتو څخه څه شی ولري. دوی کولی شي په عین وخت کې ستاسو په اپیل کې د معلوماتو تازه کولو لپاره یو ښه الره وي، نو پدې توګه د ایپل سره نوی باریري ته په ساده ډول لیږلو سره د لیست لپاره یو نوی شیان اضافه کولو اړتیا سره مخ کیږي.

نو څنګه د XML فایلونو په ایکسکوډ کې پروسس کولی شو؟ دا پروسه د متغیراتو د کارولو لپاره ګامونه پورته کوي چې د ایکس ایم ایل پارسير پروسې پیل کوي، دا پروسس کول یوه فایل، د انفرادي عنصر پیل، عنصر کې ارزښت) ارزښت (، د انفرادی عنصر پای، او د پوسیله پروسه پای.

په دې مثال کې، موږ به د انټرنېټ څخه د فایل یو ځانګړ پته ( URL

موږ به د سرلیک دوتنې د جوړولو سره پیل وکړو. دا د خپل فایل د پوټولو لپاره لږ تر لږه اړتیاو سره د تفصیل لید کنټرولر لپاره د اصلي سرلیک دوسیه ده:

@ تڼۍ د روټ ویډیو کنټرولر: UITableViewController {
د DetailViewController * د کتنې لیدونکی؛

NSXMLParser * rssParser؛
NSMutableArray * مقالې؛
NSMutableDictionary * توکي؛
NSString * currentElement؛
NSMutableString * ElementValue؛
د BOOL تېروتنه؛
}

@ بصیرت (غیرتومیک، ساتل) IBOutlet د توکیو کنټرولر * ډیزاینک کنټرولر؛

- (باطل) پارس XMLFileAtURL: (NSString *) URL؛

د پارس XMLFileAtURL فعالیت به زموږ لپاره پروسې پیل کړي. کله چې دا بشپړ شي، نو NSMutableArray "مقالې" به زموږ ډاټا ونیسي. دا لړۍ به د ایکس ایم ایل دوتنه کې د ساحې نومونو پورې اړوند د وړ وړ لغاتونو سره جوړه شي.

اوس چې موږ اړتیاوو ته اړتیا لرو، موږ به د ایم. میل په بهیر کې د پروسې سره یوځای شو:

- (باطل) پارسریډډارډټارډ سند: (NSXMLParser *) parser {
NSLog (@ "دوتنه موندل شوی او پېل کول")؛

}

دا فعالیت د پروسې په پیل کې پرمخ ځي. په دې کار کې کوم څه ته اړتیا نلري، مګر که تاسو غواړئ یو کار ترسره کړئ کله چې فایل پیل شي نو دا به ستاسو په کوډ کې وساتل شي.

- (باطل) پارس XMLFileAtURL: (NSString *) یو آر ایل
{

NSString * agentString = @ "موزیلا / 5.0 (Macintosh؛ U؛ Intel Mac OS X 10_5_6؛ en-us) ایپل واټیک / 525.27.1 (KHTML لکه ګیککو) نسخه / 3.2.1 سفاري / 525.27.1"؛
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString: URL]]؛
[د سيالي غوښتنه وکړئ: د استازو لپاره د HTTPHeaderField لپاره: @ "د کارن - استازي"]؛
xmlFile = [NSURLConection ولېږل شومینیک درس: د بیرته ستنیدو غوښتنه: د خیل تېروتنه: نیل]؛


مقالې = [[NSMutableArray Alloc] init]؛
errorParsing = NO؛

rssParser = [[NSXMLParser Alloc] انټ ویډیټا: xmlFile]؛
[rssParser setDelegate: ځان]؛

// شاید تاسو اړتیا لرئ چې د XML فایل ډول ډول چې تاسو یې ګورئ د نوعیت پر بنسټ یې یو څه بدل کړئ
[د RssParser SetShouldProcesscess نومونه: NO]؛
[د RssParser SetShouldReportNamespacePrefixes: NO]؛
[د RssParser SetShouldResolveExternalEntities: NO]؛

[rssParser parse]؛

}

دا فنکشن انجن ته لارښوونه کوي چې د ځانګړي ویب پته (یو آر ایل) کې د فایل ډاونلوډ کړئ (او د هغې د لیرې کولو لپاره پروسې پیل کړئ.

موږ لرې پرتو سیسټم وایو چې موږ Safari یو چې په ماک کې روان دی که چیرې سرور د موبایل نسخه ته د آایفون / iPad رییل راښکاره کړي.

په پای کې انتخابونه د ځینې ایکس ایم ایل فایلونو لپاره ځانګړي دي. د آر ایس ایس ډیرو ډیرو او عام XML فایلونو ته اړتیا نه لري چې دوی بدل شي.

- (باطل) پارسير: (NSXMLParser *) پارسي پارس ظاهري شوي: (NSError *) parseError {

NSString * errorString = [د NSString string سره تڼۍ: @ "د تېروتنې کوډ٪ i"، [parseError code]]؛
NSLog (@ "د ایکس ایم ایل جلا کول تېروتنه:٪ @"، تېروتنهString)؛


errorParsing = YES؛
}

دا یو ساده غلطی دی - د چک کولو لارو جوړول به د بائنری ارزښت ټاکي که دا یو غلطی راولي. تاسو ممکن د هغه څه په اړه چې تاسو یې کوئ ترسره کولو لپاره نور ځانګړتیاو ته اړتیا لرئ. که تاسو د ساده کولو په صورت کې د پروسس وروسته د ځینې کوډ ته اړتیا لرئ، نو په تېرو وختونو کې د غلطۍ پیرود کولو بیریري متغیر کولی شي.

- (باطل) پارسير: (NSXMLParser *) پارسټر ترسره شو. (NSString *) elementname نوم نوم: (NSString *) نومځای ځای IU وړینه نوم: (NSString *) q نوم نومونې: (NSDictionary *) ځانګړتیاوې: (NSDictionary *) attributeDict {
currentElement = [elementName کاپي]؛
ElementValue = [[د NSMutableStringring Alloc] انټرنټ]؛
که (عنصر نوم دی ایپلالټاسټیر: @ "توکي"])) {
item = [[NSMutableDictionary alloc] init]؛

}

}

د XML پارس غوښه درې کړنې لري، هغه څوک چې د انفرادي عنصر په پیل کې ځي، یو هغه عنصر چې د عنصر په منځ کې روان وي، او هغه عنصر چې د عنصر په پای کې روان وي.

د دې مثال لپاره، موږ به د آر ایس ایس فایلونو سره ورته فایل وکړو چې د ایکس ایم ایل فایل کې د "توکو" سرلیک لاندې عناصرو ته مات کړئ. د پروسس په پیل کې، موږ د عنصر نوم "توکي" لپاره ګورئ او د نوي ګروپ موندلو په وخت کې زموږ د وسایلو تخصیص کول دي. که نه، موږ خپل ارزښت د ارزښت لپاره پیل کوو.

- (باطل) پارسير: (NSXMLParser *) پارسير موندلی شو: (NSString *) string {
[د ElementValue ضمیمه: تار]؛
}

دا اسانه برخه ده. کله چې موږ توريګانې ومومو، موږ په ساده ډول دوی زموږ متغیر "عنصر وال" ته اضافه کوو.

- (باطل) پارسری: (NSXMLParser *) پارسي ورک شوی ایډیشن: (NSString *) عنصر نوم نومیوري سمی: (NSString *) نومځای ځای II وړ نوم: (NSString *) q نوم {
که (عنصر نوم دی ایپلالټاسټیر: @ "توکي"])) {
[مقالو اضافه کول: [item copy]]؛
} else {
[item set: د عنصر ویډیو لپاره: عنصر نوم]؛
}

}

کله چې موږ یو عنصر پروسس بشپړ کړ، موږ باید د دوو شیانو څخه یوه دنده ترسره کړو: (1) که د پای عنصر "توکي" وي، موږ خپل ګروپ پای ته ورساوه، نو موږ به خپل مقالې زموږ مقالو ته اضافه کړو. ".

یا (2) که عنصر "توکي" نه وي، موږ به زموږ په لغت کې ارزښت یو کلید سره وټاکو چې د عنصر نوم سره سمون لري. (دا پدې معنی ده چې موږ د ایکس ایم ایل فایل کې د هرې سیمې لپاره متغیر اړتیا ته اړتیا نلرو. موږ کولی شو دوی په ډیرو فعالیتونو کې پروسې ترسره کړو.)

- (باطل) پارسيرډیدډیډیډنټینټ: (NSXMLParser *) parser {

که (errorParsing == NO)
{
NSLog (@ "XML پروسس شوی!")؛
} else {
NSLog (@ "د XML پروسس په دوران کې تېروتنه رامنځته شوه")؛
}

}

دا زموږ د پوسینګ معمول لپاره اړین وروستی فعالیت دی. دا په اسانۍ سره لاسوند پای ته رسوي. تاسو به هر هغه کود کوډ کړئ چې تاسو یې غواړئ پروسې بشپړ کړئ یا د غلطۍ په صورت کې تاسو وغواړئ کوم ځانګړي ځانګړتیاوې لرئ.

ممکن یو څو شیان چې غوښتای شي دلته یې کول غواړي د ډاټا او / یا د XML فایل په ډاونلوډ کې فایل ته وساتي. په همدې ډول، که چیرې یوزر د انټرنیټ سره بوخت وي که چیرې یوزر انټرنیټ سره ونښلول شي، دوی لاهم پدې معلومات کې ترلاسه کولی شي.

البته موږ نشو کولی تر ټولو مهمې برخې هیرې کړو: د فایل افشا کولو لپاره خپل غوښتنلیک ته ووایاست (او دا د دې لټون لپاره د ویب پته ورکړئ!).

د پروسې د پیل کولو لپاره، تاسو په ساده ډول د کوډ دا لیکه مناسب ځای ته اضافه کړئ چېرې تاسو غواړئ د XML پروسس وکړئ.

[ځان پارس XMLFileAtURL: @ "http://www.webaddress.com/file.xml"]؛