Me pehea te tuhi i nga Kōnae XML i te Xcode

Ko tetahi mahi maamaa ko te whaaho ki te maha o nga taupānga ko te kaha ki te tuku i nga kōnae XML. Na, he pai, he mea tinowari te Xcode ki te tuku i tetahi kōnae XML i te Ahanoa-C.

Ka taea e tetahi kōnae XML te whakauru i tetahi mea mai i nga raraunga taketake mo to taupānga ki te whāngai RSS mo te paetukutuku. Ka taea hoki e raatau te mahi pai ki te whakahou i nga korero i roto i to taupānga, na te kore e hiahia ki te tuku i tetahi putea hou ki a Apple hei whakauru i tetahi mea hou ki te rarangi.

Na te tukanga e mahi ana i nga kōnae XML i roto i te Xcode? Ko te tukanga he taahiraa mo te tautuhi i nga taurangi kia whakamahia, te tīmata i te tukanga Parser XML, te whakamahi i taua tukanga he kōnae, te timatanga o te mea takitahi, te tahua (uara) i roto i te huānga, te mutunga o te mea takitahi, me te mutunga o te tukanga pakaru.

I tenei tauira, ka tukuna e matou he kōnae mai i te Ipurangi ma te tuku i tetahi wahitau tukutuku ( URL ).

Ka tīmata ma te hanga i te kōnae pane. He tauira tenei o te kōnae upoko matua mo te Taipitopito Tiro Detail me nga whakaritenga iti mo te pana i to tatou kōnae:

@TautahaWaitaraWaitaraWaitara: UITableViewController {
DetailViewController * taipitopitoViewController;

NSXMLParser * rssParser;
NSMutableArray * tuhinga;
NSMutableDictionary * mea;
NSString * currentElement;
NSMutableString * ElementValue;
Paepa BOOL;
}

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

- (void) parseXMLFileAtURL: (NSString *) URL;

Ko te mahi parseXMLFileAtURL ka timata i te tukanga mo maatau. Ina mutu, ka mau tonu nga raraunga NSMutableArray "tuhinga". Ko te huinga ka hangaia ki nga papakupu e kore e taea te korero, me nga taviri e pa ana ki nga ingoa o te mara i roto i te kōnae XML.

Na kua whakaritea e matou nga taurangi e hiahiatia ana, ka neke atu ki te hui o te tukanga i roto i te kōnae .m:

- (void) parserDidStartDocument: (NSXMLParser *) parser {
NSLog (@ "Kua kitea te kōnae me te panuku");

}

Ka rere tenei mahi i te timatanga o te tukanga. Kaore e hiahiatia tetahi mea i roto i tenei mahi, engari ki te hiahia koe ki te mahi i tetahi mahi ka timata te tipu ki te panui, koinei te wahi ka whakatakotoria e koe to waehere.

- (void) parseXMLFileAtURL: (NSString *) URL
{

NSString * agentString = @ "Mozilla / 5.0 (Macintosh, U; Intel Mac OS X 10_5_6; en-us) AppleWebKit / 525.27.1 (KHTML, rite Gecko) Version / 3.2.1 Safari / 525.27.1";
NSMutableURLRequest * tono = [NSMutableURLRequest tonoWithURL:
[NSURL URLWithString: URL]];
[tono tonoWhakaahua: agentString forHTTPHeaderField: @ "Kaiwhakamahi-Agent"];
xmlFile = [NSURLConnection sendSynchronousRequest: tono te whakahokiWhakautu: he hapa: nil];


tuhinga = [[NSMutableArray haina] init];
errorParsing = NO;

rssParser = [[NSXMLParser tautuhinga] initWithData: xmlFile];
[rssParser setDelegate: whaiaro];

// Me tahuri etahi o enei ma runga i te ahua o te kōnae XML e tukuna ana e koe
[rssParser setShouldProcessNamespaces: NO];
[rssParser setShouldReportNamespacePrefixes: NO];
[rssParser setShouldResolveExternalEntities: NO];

[rssParser parse];

}

Ko tenei mahi e tohutohu ana i te engine ki te tiki i tetahi kōnae ki tetahi wahitau tukutuku (URL) me te tīmata i te tukanga hei pana.

Kei te korero atu matou ki te tūmau mamao, he Safari kei runga i Mac anake i te mea ka ngana te tūmau ki te whakatika i te iPhone / iPad ki te putanga pūkoro.

Ko nga whiringa kei te mutunga he mea motuhake ki etahi kōnae XML. Ko te nuinga o nga kōnae RSS me nga kōnae XML whānui kaore e hiahiatia kia hurihia.

- (void) parser: (NSXMLParser *) parser parseErrorOccurred: (NSError *) parseError {

NSString * errorString = [NSString stringWithFormat: @ "Hapa waehere% i", [parseError waehere]];
NSLog (@ "Hapa kei te tarai i te XML:% @", errorString);


errorParsing = YES;
}

He waahi-pohehe noa tenei ka tautuhi i te uara taapiri mēna ka tutuki he hapa. Ka hiahia pea koe i tetahi atu mea motuhake i konei ma runga i te aha e mahi ana koe. Mena ka hiahia koe ki te rere i tetahi waehere i muri i te tukatuka i roto i te take o te hapa, ka taea te karanga i te taurangi-a-ira-koreParing hurihuri i taua wa.

- (void) parser: (NSXMLParser *) parser iWhakaahuatia: (NSString *) elementName namespaceURI: (NSString *) namespaceURI tohuName: (NSString *) huanga huanga: (NSDictionary *) attributeDict {
currentElement = [copyName kope];
ElementValue = [[NSMutableString tautuhinga] init];
ki te ([elementName heEqualToString: @ "taonga")) {
item = [[NSMutableDictionary haupae] init];

}

}

Ko te kai o te parser XML e toru nga mahi, tetahi e rere ana i te timatanga o te huinga takitahi, tetahi e rere ana i waenganui o te whanga o te huānga, me tetahi e rere ana i te pito o te huanga.

Mo tenei tauira, ka tukuna he kōnae e rite ana ki nga kōnae RSS e wawahi ana i nga huānga ki nga roopu i raro i te pane o "nga mea" i roto i te kōnae XML. I te timatanga o te tukatuka, kei te tirotiro tatou mo te ingoa ingoa "taonga" me te tohatoha i to tatou papakupu tuhinga ina kitea te roopu hou. Ki te kore, ka tautuhi i to maatau mo te uara.

- (void) parser: (NSXMLParser *) parser kiteaCharacters: (NSString *) string {
[ElementValue appendString: string];
}

Koinei te wahi ngawari. A, ka kitea e matou he tohu, ka tohatoha noa matou ki to taatau "ElementValue".

- (void) parser: (NSXMLParser *) parser iWhakaahua: (NSString *) elementName namespaceURI: (NSString *) namespaceURI ingoaName: (NSString *) qName {
ki te ([elementName heEqualToString: @ "taonga")) {
[tuhinga putObject: [copy copy]];
} atu {
[tautuhinga setObject: ElementValue forKey: elementName];
}

}

Ina mutu te tukatuka i tetahi huanga, me mahi tetahi o nga mea e rua: (1) mehemea ko te "mutunga" te "mea", kua oti ia matou taatau, na ka tapiritia e matou to maatau papakupu ki to maatau kaupapa " ".

Ranei (2) ki te kore te huanga e "taonga", ka tautuhi i te uara i roto i to papakupu me te matua e hono ana ki te ingoa o te huanga. (Ko tenei kaore e hiahiatia he taurangi takitahi mo ia mara i roto i te kōnae XML.

- (void) parserDidEndDocument: (NSXMLParser *) parser {

mehemea (errorParsing == NO)
{
NSLog (@ "Tukatuka XML!");
} atu {
NSLog (@ "Hapa i puta i te tukanga XML");
}

}

Koinei te mahi whakamutunga e hiahiatia ana mo to maatau mahi. Ka mutu te tuhinga. Ka waiho e koe tetahi waehere e hiahia ana koe ki te whakaoti i te tukanga i konei ranei tetahi mea motuhake e hiahia ana koe ki te mahi i roto i te take o te hapa.

Kotahi te mea e hiahiatia ana e nga taupānga kia mahia i konei ko te tiaki i te raraunga me te / XML ki tetahi kōnae i runga i te taputapu. I taua ara, ki te kore te kaiwhakamahi e hono atu ki te Ipurangi i te wa e whai ake nei ka utaina e ratou te taupānga, ka taea tonu e ratou ki tenei korero.

Ko te tikanga, kaore e taea e wareware ki te waahanga nui rawa atu: te korero i to tono kia tuhia te kōnae (me te tuku i tetahi wahitau tukutuku kia kitea i!!).

Hei tīmata i te tukanga, me hiahia koe ki te whakauru i tenei rarangi waehere ki te wahi tika e hiahia ana koe ki te mahi i te tukatuka XML:

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