Indlela yokuqhawula iifayile ze-XML kwi-Xcode

Omnye umsebenzi olula owona mgxobhozo kwizintlobo ezininzi zokusebenza ukwazi ukuxubusha iifayile ze-XML. Kwaye, ngenhlanhla, i-Xcode yenza kube lula ukuyifaka ifayile ye-XML kwi-Injongo-C.

Ifayile ye- XML ingaqukatha nantoni kwi data eyisiseko malunga neprogram yakho kwi- RSS feed kwiwebhusayithi. Ziyakwazi nokuba yindlela enhle yokuhlaziya ulwazi ngaphakathi kweso sicelo sakho kude, ngokugqithiseleyo isidingo sokungenisa ibhanari entsha kwi-Apple nje ukuba ungeze into entsha kuloluhlu.

Ngoko sisebenzisa njani iifayile ze-XML kwi-Xcode? Inkqubo iqulethe amanyathelo okuqalisa ukusetyenziswa kweempawu, ukuqala inkqubo ye-XML yokusetyenziselwa, ukunyusa ukwenza inkqubo yefayile, ukuqala kwento ethile, abalinganiswa (xabiso) ngaphakathi kwento, ekupheleni kwento ethile, kunye nokuphela kwenkqubo yokupasa.

Kulo mzekelo, siza kuhambisa iifayile kwi-intanethi ngokuyidlulisela idilesi ethile yewebhu ( URL ).

Siza kuqalisa ngokukwakha ifayile yehlosi. Lo ngumzekelo wefayile engundoqo yintloko ye-Header View View Manager kunye neemfuneko ezingundoqo zokupasa ifayile yethu:

@interface RootViewController: UITableViewController {
DetailViewController * iinkcukachaLoViewController;

NSXMLParser * rssParser;
NSMutableArray * amanqaku;
NSMutableDictionary * into;
NSString * currentElement;
NSMutableString * ElementValue;
Iphutha le-BOOLUkuphawula;
}

@property (nonatomic, gcina) IBOutlet DetailViewController * inkcukachaViewController;

- (ayikho) ngeXMLFileAtURL: (NSString *) URL;

Umsebenzi we-parseXMLFileAtURL uza kuqala inkqubo. Xa iphelile, i-NSMutableArray "amanqaku" aya kubamba idatha yethu. Uluhlu luza kwenziwa ngamazwi echazwayo anesitshixo ezihambelana namagama endle kwifayile ye-XML.

Ngoku ukuba senze iimpawu ezifunekayo, siya kuqhubela phambili kwinkqubo kwifayile ye .m.

- (ayikho) i-parserDidStartDocument: (NSXMLParser *) isilathisi {
NSLog (@ "Ifayile ifunyenwe kwaye iqala ukuhamba");

}

Lo msebenzi ugijima ekuqaleni kwenkqubo. Akukho mfuneko yokubeka nayiphi na into kulo msebenzi, kodwa ukuba ufuna ukwenza umsebenzi xa ifayile iqalisa ukuchithwa, yilapho uza kufaka ikhowudi yakho.

- (ayikho) ngeXMLFileAtURL: (NSString *) URL
{

NSString * agentString = @ "Mozilla / 5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit / 525.27.1 (i-KHTML, njengeGecko) Version / 3.2.1 i-Safari / 525.27.1";
NSMutableURLRequest * isicelo = [NSMutableURLRequest isiceloI-WITHURL:
[NSURL URLWithString: URL]];
[cela isetValue: i-agentString yeHTTPHeaderField: @ "Ummeli-Umsebenzisi"];
xmlFile = [NSURLConnection thumelaSynchronousFuna isicelo: buyiselaResponse: i-error nil: nil];


amanqaku = [[NSMutableArray allocation] init];
IphuthaParsing = Hayi;

rssParser = [[NSXMLParser yabelwa] initWithData: xmlFile];
[rssParser setDelegate: self];

// Ungadinga ukuguqula ezinye zezi zinto kuxhomekeke kuhlobo lwefayili ye-XML oyilungisayo
[rssParser setShouldProcessNamespace: NO];
[rssParser setShouldReportNamespacePrefixes: Hayi];
[rssParser SetShouldResolveEternalities: Amanqaku] Hayi];

[rssParser parse];

}

Lo msebenzi uyalela injini ukulanda ifayile kwidilesi ethile yewebhu (i-URL) kwaye uqale inkqubo yokuyihambisa.

Sitshela iseva ekude ukuba siyi-Safari eqhubayo kwi-Mac kuphela xa umncedisi ezama ukuhambisa i- iPhone / iPad kwikhompyutha yeselula.

Izinketho ekupheleni zizodwa kwiifayile ezithile ze-XML. Uninzi lweefayile ze-RSS kunye neefayile ze-XML eziqhelekileyo aziyi kufuna ukuba zivuliwe.

- (engabikhoyo): (NSXMLParser *) u-parserErrorOxhunyiwe: (I-NSError *) i-parseError {

I-NSString * iphuthaString = [NSString stringWithFormat: @ "Ikhowudi yephutha% i", [parseError code]];
NSLog (@ "Iphutha lokutshintshela i-XML:% @", ikopiString);


IphuthaParsing = YESU;
}

Le yindlela elula yokujonga iimpazamo eziza kubeka ixabiso elibini xa lihlangabezana nephutha. Unokufuna into ethile ngakumbi apha kuxhomekeke kwinto oyenzayo. Ukuba ufuna ukuqhuba ikhowudi ethile emva kokucwangciswa kwimeko yephutha, impazamoIngqamaniso yokubhinqa ibinzana ingabizwa ngelo xesha.

- (ngaphandle): (NSXMLParser *) i-parser didStartElement: (NSString *) elementName namespaceURI: (NSString *) indawo yegamaNAME i-qualifiedName: (NSString *) iimpawu zeQName: (NSDictionary *)
I-currentElement = [ikopi yeName];
ElementValue = [[NSMutableString allocation] init];
ukuba ([elementName nguEqualToString: @ "into"]) {
into = [[NSMutableDictionary ukwabelana] init];

}

}

I-meat of the XML isilathisi iqukethe imisebenzi emithathu, enye eqhubayo ekuqaleni kwento ethile, ehamba ngexesha lokupakisha iqela, kunye nelo ligijima ekupheleni kwento.

Kulo mzekelo, siza kufaka iifayile ezifana neefayile ze-RSS ezahlula izinto zibe ngamaqela phantsi kwesihloko "sezinto" ngaphakathi kwefayili ye-XML. Ekuqaleni kokucwangciswa, sihlola igama lento "into" kunye nokwabiwa kwesichazi samagama xa iqela elitsha lifunyenweyo. Ngaphandle koko, siqala ukuguquguquka kwexabiso lethu.

- (engabikhoyo): (NSXMLParser *) i-parser ifunyenweIzikhonkwane: (NSString *) ngentambo {
[I-ElementValue ifake isicelo: umtya];
}

Le ngxenye elula. Xa sifumana abalinganiswa, sizongeza nje kwi-variable yethu ethi "ElementValue".

- (ngaphandle): (NSXMLParser *) I-parer didEndElement: (NSString *) elementName namespaceURI: (NSString *) indawo yegamaNAME i-qualifierName: (NSString *) qName {
ukuba ([elementName nguEqualToString: @ "into"]) {
[amanqaku angezeObject: [ikopi yento]];
} enye {
[setObject into: ElementValue for Key: elementName];
}

}

Xa siphelile ukucwangcisa into ethile, kufuneka senze enye yezinto ezimbini: (1) ukuba iqela lokugqibela "yinto", siqedile iqela lethu, ngoko siya kufaka isichazamazwi sethu kwisiqendu sethu "samanqaku ".

Okanye (2) ukuba le nto ayilona "into", siza kubeka ixabiso kwisichazamazwi sethu ngesitshixo esifana negama legama. (Oku kuthetha ukuba asiyidingi into ehlukeneyo kwintsimi nganye ngaphakathi kwefayili ye-XML.

- (ayikho) i-parserDidEndDocument: (NSXMLParser *) isilathisi {

ukuba (impazamoParsing == NO)
{
NSLog (@ "XML processing process done!");
} enye {
NSLog (@ "Iphutha livela ngexesha lokucwangciswa kwe-XML");
}

}

Lo ngumsebenzi wokugqibela owufunekayo ukuze siqhube. Kuphela kuphela umqulu. Uya kufaka nayiphi na ikhowudi ofuna ukuyigqiba inkqubo apha okanye nayiphi na into ekhethekileyo onokuyenza xa kwenzeka iphoso.

Enye into eninzi efuna ukuyenza apha kukugcina idatha kunye / okanye ifayela le-XML kwifayile kwifowuni. Ngaloo ndlela, ukuba umsebenzisi akaxhunyiwe kwi-Intanethi ngexesha elizayo xa belayisha i-app, banokufumana le ngcaciso.

Ngokuqinisekileyo, asikwazi ukulibala inxalenye ebalulekileyo: xelela isicelo sakho ukuba sidibanise ifayile (kwaye siyinike idilesi yewebhu ukuze siyifumane!).

Ukuqala inkqubo, kufuneka udibanise lo mgca wekhowudi kwindawo efanelekileyo apho ufuna ukwenza ukusetyenziswa kwe-XML:

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