Sida loo kala-gali karo faylasha XML ee Xcode

Mid ka mid ah hawsha fudud oo ah laf-dhabarka macaamiisha badan waa kartida si loo xallilo faylasha XML. Nasiib wanaag, Xcode waxa ay fududeyneysaa in la kala saaro faylka XML ee Objective-C.

Faylka XML wuxuu ka koobnaan karaa wax kasta oo ka mida xogta asaasiga ah ee ku saabsan appkaaga si loogu isticmaalo bogga internetka. Waxay sidoo kale noqon karaan hab aad u casriyeynaya macluumaadka gudaha app kaaga fog, sidaas oo ay dhaaftay baahida loo qabo in la soo gudbiyo ikhtiyaari cusub Apple si ay u soo geliyaan shey cusub oo liiska.

Sidaa daraadeed sidee baan u shaqeynaa faylasha XML ee Xcode? Hawlgalku wuxuu ka kooban yahay talaabooyin lagu bilaabayo isbeddelada loo adeegsanayo, ka bilawga geedi socodka xuddunta xayeysiiska, quudinta nidaamkan faylka, bilawga shakhsi ahaaneed, jilayaasha (qiimaha) gudaha, dhammaadka qaybta shakhsi ahaaneed, iyo dhammaadka geedi-socodka qalajinta.

Tusaale ahaan, waxaan ka soo qaadeynaa feylka internetka adigoo gudbinaya cinwaan gaar ah ( URL ).

Waxaan ku bilaabi doonaa dhisida faylka madaxa. Tani waa tusaale ka mid ah feylka madax-aasaasiga ah ee loogu talagalay Xakamaynta Kormeeraha Guud oo leh shuruudaha ugu hooseeya ee kala-soocidda faylasheena:

@interface RootViewController: UITableViewController {
DetailViewController * detailViewController;

NSXMLParser * rssParser;
NSMutableArray * maqaalada;
NSMutableDictionary * sheyga;
NSString * CurrentElement;
NSMutableString * ElementValue;
Cilladda BOOLTabashada;
}

@property (nonatomic, hayn) IBOutlet DetailViewController * detailViewController;

- (waxba kama jiraan) parseXMLFileAtURL: (NSString *) URL;

Farsamaynta parseXMLFileAtURL waxay ku bilaabi doontaa hannaanka annaga. Marka ay dhamaato, NSMutableArray "maqaallo" waxay hayn doonaan xogtayada. Dhanka waxaa lagu sameyn doonaa qaamuusyo la isku mari karo oo leh furayaal la xiriira magacyada garoonka ee faylka XML.

Hadda waxaan samaynay isbeddelada loo baahan yahay, waxaan u gudbin doonaa kulanka geedi socodka .m.

- (void) parserDidStartDocument: (NSXMLParser *) Qalabixiye {
NSLog (@ "Faylka la helay iyo kala furfurid");

}

Shaqadani waxay bilowday bilawga hawsha. Looma baahna inaad wax ka qabato shaqadan, laakiin haddii aad rabto inaad qabato hawlgab marka feylku bilaabmo in la furfuro, tani waa halka aad ku qori lahayd lambarkaaga.

- (waxba kama jiraan) parseXMLFileAtURL: (NSString *) URL
{

NSString * agentString = @ "Mozilla / 5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit / 525.27.1 (KHTML, sida Gecko) Version / 3.2.1 Safari / 525.27.1";
NSMutableURLRequest * codsi = [NSMutableURLRequestWithURL:
[NSURL URLWithString: URL]];
[codso setValue: wakiil u ah HTTPHeaderField: @ "User-Agent"];
xmlFile = [NSURLConnection sendSynchronousRequest: codso soo celinta jawaabcelinta: qalad nil: nil];


maqaalo = [[NSMutableArray qoondaynta] dakhliga];
khaladkaAmgeysi = MAYA;

rssParser = [[NSXMLParser qoondaynta] initWithData: xmlFile];
[rssParser setDelegate: iskii];

// Waxaa laga yaabaa inaad u baahatid in aad soo celiso qaar ka mid ah kuwan iyadoo ku xiran nooca feylka XML aad adigu kala soocayso
[rssParser setShouldProcessNamespaces: MAYA];
[rssParser setShuffReportNamespacePrefixes: MAYA];
[rssParser ayaa dejiyey ShukuraatiXuduudaha Dheeraadka ah: MAYA];

[qaybta rssParser];

}

Shaqadani waxay ku dhiirrigelisaa injineerka inuu feyl gareeyo cinwaan gaar ah oo cinwaankiisu yahay (URL) isla markaasna bilawdo geeddi-socodka loogu talagalay.

Waxaan u sheegeynaa server-ka fog-fog in aan Safari ku ordno Mac kaliya haddii kiiskani isku dayayo in uu dib udhigto iPadka / iPad-ka si loogu guuro.

Doorashooyinka ugu dambeeya waxay gaar u yihiin faylasha XML. Inta badan faylasha RSS iyo faylasha guud ee XML uma baahna iyaga.

- (void) kala-saaraha: (NSXMLParser *) Dareeraha xuduudaha ah: (NSError *) parseError {

NSString * errorString = [NSString stringWithFormat: @ "Error code% i", [code code parseError]];
NSLog (@ "Error erring XML:% @", qaladString);


khaladka '= HAA';
}

Kani waa hab-raac khalad-sahlan oo ku dhisan qiime ikhtiyaari ah haddii uu la kulmo qalad. Waxaa laga yaabaa inaad u baahato waxyaabo kale oo gaar ah halkaan ku xiran waxa aad sameyneyso. Haddii aad si fudud u baahan tahay in aad maamusho koodhka ka dib marka la shaqeynayo kiiska qaladka, qalabka isbeddelka ikhtiyaariga ah waxaa loo wici karaa wakhtigaas.

(Nosstring *) Qaamuuska Magaca: (NSString *) QName sifooyinka: (NSDictionary *) attributeDeegaanka {(NSString *)
currentElement = [itemName copy];
ElementValue = [[NSMutableString qoondaynta] dakhliga];
haddii ([elementName isEqualToString: @ "item"]) {
item = [[NSMutableDictionary qoondayn] dakhliga];

}

}

Hilibka xuddunka XML wuxuu ka kooban yahay saddex shaqooyin, midkii hore ee bilawga walxaha shakhsiga ah, mid ka mid ah inta ku dhexjira bartamaha qaybta hoose, iyo mid ka mid ah kan ugu dambeeya ee qaybta.

Tusaale ahaan, waxaan isku dali doonaa faylka la midka ah faylasha RSS-ka ee burburinaya xubno kooxo hoos yimaada "walxaha" ee ku jira faylka XML. Bilawga falanqaynta, waxaanu hubineynaa magaca "element" elementka iyo u qoondeynta ereyada alaabta marka koox cusub la ogaado. Haddii kale, waxaynu bedeleynaa qiimeeynteena qiimaha.

- (void) kala-saaraha: (NSXMLParser *) kala-saaraha Calaamadaha: (NSString *) string {
[ElementValue appendString: string];
}

Tani waa qayb fudud. Marka aan helno xuruufta, waxaanu ku darsadeynaa isbedelkeenna "ElementValue".

((void) saaraha: (NSXMLParser *) Dhexdhexaadiye didEndElement: (NSString *) Calaamad magac magaceed: (NSString *) Magaca aqoonsigaName: (NSString *) qName {
haddii ([elementName isEqualToString: @ "item"]) {
[maqaalada addObject: [copy copy]];
} kale {
[item setObject: ElementValue forKey: elementName];
}

}

Markaan dhameyneyno farsamooyinka, waxaan u baahannahay inaan samayno mid ka mid ah laba arrimood: (1) haddii cutubka ugu dambeeya uu yahay "shey", waxaanu dhammeeynay kooxdayada, sidaa daraadeed waxaan ku dareynaa qaamuuskayaga "arrimaheena" ".

Ama (2) haddii unuggu uusan ahayn "shey", waxaanu qiimeynaynaa qiimaha aan ku yeelaneyno luuqadeena furaha ku habboon magaca magaciisa. (Tani waxay ka dhigan tahay inaanan u baahnayn variable doorsoome kasta oo ku jira faylka XML-ka ah.

- (waxba kama jiraan) parserDidDaDocument: (NSXMLParser *) go'aamiye {

haddii (qaladeyno = = MAYA)
{
NSLog (@ "waxqabadka XML ee la sameeyey!");
} kale {
NSLog (@ "Khalad ayaa dhacay intii lagu guda jiray hawlgalka XML");
}

}

Tani waa hawsha ugu dambeysa ee loo baahan yahay si joogta ah ee isdaba joogga ah. Waxay ku dhammaataa dukumintiga. Waxaad ku dhejin doontaa xeer kasta oo aad rabto inaad ku dhameysato hawsha halkan ama wixii khaas ah ee aad rabto inaad sameyso haddii ay dhacdo qalad.

Mid ka mid ah waxyaaba badan oo badan ayaa laga yaabaa inay rabaan inay halkan ku sameeyaan si ay u badbaadiyaan xogta iyo / ama faylka XML si fayl loo geliyo qalabka. Habkaas, haddii aan isticmaalo internetka marka xigta ay ku soo rogaan app, waxay wali ka heli karaan macluumaadkan.

Dabcan, ma ilaawi karno qaybta ugu muhiimsan: adigoo u sheegaya codsigaaga inaad feylayso faylka (iyo adoo siinaya cinwaan internet ah si aad u hesho!).

Si aad u bilawdo geeddi-socodka, waxaad u baahan tahay inaad ku darto line-ka code-kaaga meesha ku habboon meesha aad rabto inaad samayso hawlgalka XML:

[self parseXMLFileAtURL: @ "http://www.webaddress.com/file.xml"];