Pehea e laka ai i nā Kōnae XML i ka Xcode

ʻO kahi mea maʻalahi kahi i hoʻokaheʻia ai nā polokalamu he nui ka hiki ke kākau i nā faila XML. A,ʻoluʻolu, hiki i ka Xcode keʻoluʻolu e ninini i kahi faila XML i Objective-C.

Hiki i kahi faila XML ke komo i kekahi mea mai nāʻikepili maʻamau e pili ana i kāu polokalamu i kahi hānai RSS no kahi pūnaewele. Hiki iā lākou ke lilo i mea maikaʻi loa no ka hoʻonuiʻana i kaʻikepili i loko o kāu polokalamu, no laila, ke kāpae nei i ka pono e waiho i kahi hua'ōlelo hou iā Apple me ka hoʻokomo i kahi mea hou i kahi papa inoa.

No laila, pehea mākou e hoʻoponopono ai i nā faila XML i ka Xcode?ʻO ka papa hana nā papa no ka hoʻomakaʻana i nā māloli e hoʻohanaʻia, e hoʻomaka ana i ke kaʻina polokalamu XML, e hānai ana i kēlā papahana i kahi faila, ke kumu o kekahi mea pono, ka hopena o kekahi mea, a me ka hopena o ke kaʻina hana.

Ma kēia hiʻohiʻona, e kāpae mākou i kahi faila mai ka pūnaewele ma o ka waihoʻana i kahi pūnaewele pūnaewele ( URL ).

E hoʻomaka mākou me ke kūkuluʻana i ka waihona pane. He kumu kēia o kahi poʻo pane poʻokela no kahi Detail View Controller me nā kau palena kūpono no ka hoʻopiliʻana i kā mākou faila:

Wehewehehonua:
HoʻokaʻaʻikeViewController * detailViewController;

NSXMLParser * rssParser;
NSMutableArray * mea;
NSMutableDictionary * mea;
NSString * ke hoʻohana nei;
NSMutableString * ElementValue;
Pā'ālua hoʻopunipuni;
}

@amekoʻole (nonatomic, mālama) I DetailViewController * detailViewController;

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

Hana ke maheleXXFileAtURL i ka hana no mākou. Ke hoʻopauʻia, e paʻa i kā mākouʻikepili nā "articles" NSMutableArray. E hanaʻia kēia pūnaewele i nā puke wehewehe'ōlelo maʻalahi me nā kī e pili ana i nā inoa'āina ma ka kōnae XML.

I kēia manawa ua hoʻonoho mākou i nā kānana i makemakeʻia, e neʻe mākou i kahi hālāwai o ka papahana ma ka .m file:

- (void) parserDidStartDocument: (NSXMLParser *) parser {
NSLog (@ "Loaʻa ka waihona a hoʻomaka i ka hoʻomaka");

}

Ke holo nei kēia hana i ka hoʻomaka o ka hana. ʻAʻole pono e hoʻokomo i kekahi mea ma kēia hana, akā inā makemakeʻoe e hana i kahiʻoihana i ka hoʻomakaʻana o ka pāʻana i kahi kōnae, ma lailaʻoe e kau ai i kāu code.

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

NSString * agentString = @ "Mozilla / 5.0 (Macintosh, U; Intel Mac OS X 10_5_6; en-us) AppleWebKit / 525.27.1 (KHTML, like Gecko) Version / 3.2.1 Safari / 525.27.1";
NSMutableURLRequest * noi = [NĀMĀLAULAULAIWAIWAIWAIWWURL:
[NSURL HKHWHWHWH: URL]];
[noi i hoʻonohonohoʻia: agentString forHTTPHeaderField: @ "Mea hoʻohana Pūnaewele"];
xmlFile = [NSURLConnection sendSynchronousRequest: koi e hoʻihoʻiAhoʻi: nil hewa: nil];


nā hua = [[MĀMĀINAWAIWAI'ĀINA] init];
kuhihewaPars = = NO;

rssParser = [[NSXMLParser hoʻoilina] initWithData: xmlFile];
[rssParser setDelegate: manaʻo];

// Ponoʻoe e hoʻololi i kekahi o kēia mau mea ma ka hilinaʻiʻana i keʻano o ka faila XML āu e kau nei
[rssParser setShouldProcessNamespaces: NO];
[rssParser setShouldReportNamespacePrefixes: NO];
[rssParser setShouldResolveExternalEntities: NO];

[rssParser parse];

}

Ke aʻo nei kēia hana i kaʻenekini e kiʻi i kahi faila ma kekahi pūnaewele pūnaewele (URL) a hoʻomaka i ke kaʻina hana no ka hoʻopiliʻana.

Ke haʻi nei mākou i kahi kikowaena mamao e mākou he Safari e holo ana ma luna o Mac inā wale nō e ho'āʻo ana ka kikowaena e hoʻihoʻi i ka iPhone / iPad i kahi pūnaewele pūnaewele.

ʻO nā koho i ka hopena ua kiko'īʻia i kekahi mau faila XML. ʻO ka hapa nui o nā RSS a me nā kōnae XML pūnaewele,ʻaʻole lākou e pono e hoʻololiʻia.

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

NSString * errorString = [NSString stringWithFormat: @ "Kōkuke%% i", [parseError code]];
NSLog (@ "Kōkuhi e hoʻolālā ana i ka XML:% @", errorString);


kuhi hewaPars = YES;
}

ʻO kēia ka hoʻokele kūmāmā maʻamau e hoʻonohonoho i kahi waiwai binary inā loaʻa ia i kahi kuhi. Makemake pahaʻoe i kahi mea kiko'ī'ē aʻe maʻaneʻi e pili ana i kāu hana. Inā ponoʻoe e holo i kahi code after processing in the case of error, hiki ke kapaʻia ka variable binary errorParsing i kēlā manawa.

- (void) parser: (NSXMLParser *) parser madeStartElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI inoaName: (NSString *) inoa inoaNName: (NSDictionary *) attributeDict {
kele neiElement = [elementName kope];
ElementValue = [[HawaiianMontactStation assign] init];
inā ((element elementameEqualToString: @ "mea")) {
item = [[McMutableDictionary hoʻoilina] init];

}

}

ʻO kaʻiʻo o ka paʻi XML heʻekolu mauʻoihana, kahi e holo ana i ka hoʻomakaʻana o kekahi mea pono, hoʻokahi e holo ana i waena o ka pāʻana o ke element, aʻo kekahi e holo ana i ka hopena o ka mea.

No kēia hiʻohiʻona, e hoʻopili mākou i kahi faila e like me nā RSS RSS e uhaki i nāʻene i nā hui ma lalo o ke poʻomanaʻo o "nā mea" i loko o ka faila XML. Ma ka hoʻomakaʻana o ka mea hana, ke nānā nei mākou no ka inoa inoa "mea" a me ka hoʻoiliʻana i kā mākou puke wehewehe'ōlelo i kaʻikeʻana o kahi hui hou. Ināʻole, hoʻomaka mākou i kā mākou ukana no ka waiwai.

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

ʻO kēia ka māhele maʻalahi. Keʻike mākou i nā huapalapala, hoʻokomo wale mākou iā lākou i ko mākou huahelu "ElementValue".

- (void) parser: (NSXMLParser *) parser i hanaʻia: (NSString *) elementName namespaceURI: (NSString *) namespaceURI inoaName: (NSString *) qName {
inā ((element elementameEqualToString: @ "mea")) {
[mau mea houObject: [item copy]];
} ka mea'ē aʻe {
[mea hoʻonohonoho setObject: ElementValue forKey: elementName];
}

}

Ke hoʻopau mākou i ka hanaʻana i kekahi mea, pono mākou e hana i kekahi o nā meaʻelua: (1) inā he "mea" ka helu hope, ua pau mākou i kā mākou hui, a laila e kākoʻo i kā mākou puke wehewehe'ōlelo i kā mākou papahana "mauʻatikala ".

A iʻole (2) ināʻaʻohe "mea" ka element, e hoʻonoho mākou i ka waiwai i loko o kā mākou puke wehewehe'ōlelo me kahi kī e pili ana i ka inoa o ka mea. (ʻO kēia keʻano,ʻaʻole mākou eʻike i kahi loli o kēlā me kēia māhele i loko o ka faila XML.

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

inā (missParsing == NO)
{
NSLog (@ "hana maʻamau a XML!");
} ka mea'ē aʻe {
NSLog (@ "Haʻe hewa i ka manawa o ka processing XML");
}

}

ʻO kēia ka hana hope loa no kā mākou hana maʻamau. E hoʻopau wale i ka palapala. E kau i kekahi code e makemakeʻoe e hoʻopau i ke kaʻina hana maʻaneʻi a iʻole kekahi mea kūikawā paha āu e makemake ai e hana i ka hihia.

Hoʻokahi mea nui o nā polokalamu e makemake ana e hana maʻaneʻi e mālama i kaʻikepili a me ka XML file i kahi faila ma ke kiko. ʻO ia ala, ināʻaʻole i pili ka mea hoʻohana i ka Pūnaewele i ka manawa hou e hoʻoili ai i ka polokalamu, hiki iā lākou ke loaʻa i kēiaʻike.

ʻOiaʻiʻo,ʻaʻole hiki iā mākou ke hoʻopoina i ka mea nui loa: e hōʻike ana i kāu noi e waiho i ka pūnaewele (a hāʻawi i kahi pūnaewele pūnaewele e loaʻa iā ia!).

No ka hoʻomakaʻana i ke kaʻina hana, ponoʻoe e hoʻohui i kēia laina o ke code i kahi kūpono kahi e makemake aiʻoe e hana i ka hana maʻamau o XML:

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