Esi esi tinye XML faịlụ na Xcode

Otu ọrụ dị mfe nke bụ ọkpụkpụ azụ na ọtụtụ ngwa bụ ikike ịmepụta faịlụ XML. Na, ọ dị mma, Xcode na-eme ka ọ dịtụ mfe ịpị faịlụ XML na Objective-C.

Otu faịlụ XML nwere ike ịnwe ihe ọ bụla sitere na isi data banyere ngwa gị na ndepụta RSS maka ebe nrụọrụ weebụ. Ha nwekwara ike ịbụ ụzọ dị mma nke imelite ozi n'ime ngwa gị, si otú ahụ na-egbochi mkpa ọ dị ịnyefe ọnụọgụ ọhụrụ ọhụrụ na Apple nanị ịtinye ihe ọhụrụ na ndepụta.

Ya mere, olee otú anyị si edozi faịlụ XML na Xcode? Usoro ahụ nwere usoro maka ịmalite ịmegharị mgbanwe ndị a ga - eji mee ihe, malite usoro XML parser, inye usoro ahụ faịlụ, mmalite nke otu ihe, ihe odide (uru) n'ime mmewere, njedebe nke ihe otu onye, ​​na njedebe nke usoro mmechi ahụ.

N'ihe atụ a, anyị ga-agbanye faịlụ site na Ịntanetị site na ịgafe otu adreesị weebụ ( URL ).

Anyị ga-amalite site n'ịmepụta faịlụ nkụnye eji isi mee. Nke a bụ ihe atụ nke faịlụ isi ihe dị mkpa maka Njikwa Ihe Nyocha na ihe kachasị mkpa maka ịmepụta faịlụ anyị:

@interface RootViewController: UITableViewController {
DetailViewController * detailViewController;

NSXMLParser * rssParser;
NSMutableArray * isiokwu;
NSMutableDictionary * ihe;
NSString * ugbu a;
NSMutableString * ElementValue;
Ihie njehie BOOL;
}

@property (nonatomic, retain) DetailViewController IBOut * detailViewController;

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

Ọrụ parseXMLFileAtURL ga-amalite usoro maka anyị. Mgbe o mechara, NSMutableArray "isiokwu" ga-ejide data anyị. Ndị agha ahụ ga-agụnye akwụkwọ ọkọwa okwu a na-enweghị ike iji igodo ndị metụtara ngalaba aha na faịlụ XML.

Ugbu a na anyị edoziwo mgbanwe ndị dị mkpa, anyị ga-aga n'ihu nzukọ nke usoro ahụ .m:

- (void) parserDidStartDocument: (NSXMLParser *) parser {
NSLog (@ "Njirimara achọtala ma malite ịmalite");

}

Ọrụ a na-agba na mmalite usoro. Ọ dịghị mkpa itinye ihe ọ bụla na ọrụ a, ma ọ bụrụ na ịchọrọ ịrụ ọrụ mgbe faịlụ malitere ịmalite, nke a bụ ebe ị ga-etinye koodu gị.

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

NSString * agentString = @ "Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_5_6; en-us) AppleWebKit / 525.27.1 (KHTML, dika Gecko) Version / 3.2.1 Safari / 525.27.1";
NSMutableURLRequest * arịrịọ = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString: URL]];
[arịrịọ setValue: agentString forHTTPHeaderField: @ "Onye ọrụ-ọrụ"];
xmlFile = [NSURLConnection sendSynchronousRequest: arịrịọ laghachiResponse: nil error: nil];


articles = [[NSMutableArray alloc] init];
errorParsing = Ọ dịghị;

rssParser = [[NSXMLParser alloc] initWithData: xmlFile];
[rssParser setDelegate: onwe];

// Ị nwere ike ịgbanye ụfọdụ n'ime ndị a dabere na ụdị faịlụ XML ị na-agbanye
[rssParser setShouldProcessNamespaces: NO];
[rssParser setShouldReportNamespacePrefixes: NO];
[rssParser setShouldResolveExternalEntities: NO];

[rssParser parse];

}

Ọrụ a na-agwa engine ka ọ budata faịlụ na otu adreesị weebụ (URL) wee malite usoro maka ịme ya.

Anyị na-agwa netwọk dị nkesa na anyị bụ Safari na-agba ọsọ na Mac ma ọ bụrụ na ihe nkesa ahụ na-agba mbọ redirect iPhone / iPad na nsụgharị mobile.

Nhọrọ ndị dị na njedebe bụ kpọmkwem maka ụfọdụ faịlụ XML. Imirikiti faịlụ RSS na faịlụ XML jikọtara agaghị achọ ka ha gbanwee.

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

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


errorParsing = EE;
}

Nke a bụ njehie dị mfe-nhazi nhazi nke ga-eme ka ọnụọgụ ọnụọgụ ma ọ bụrụ na ọ na-ezute njehie. Ị nwere ike ịchọrọ ihe ọzọ karịrị ebe a dabere na ihe ị na-eme. Ọ bụrụ na ọ dị gị mkpa ịgba ọsọ ụfọdụ koodu mgbe ị nesịrị na njehie, a pụrụ ịkpọ njehie ọnụọgụ abụọ errorParsing n'oge ahụ.

- (void) parser: (NSXMLParser *) parser didStartElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualifiedName: (NSString *) aha njirimara: (NSDictionary *) attributeDict {
currentElement = [elementname copy];
ElementValue = [[NSMutableString alloc] init];
ma ọ bụrụ ((elementname bụEqualToString: @ "ihe")) {
ihe = [[NSMutableDictionary alloc] init];

}

}

Anụ nke parser XML nwere ọrụ atọ, nke na-agba ọsọ ná mmalite nke ihe onye ọ bụla, nke na-agba n'etiti etiti nke mmebi, na nke na-agba ọsọ na njedebe nke mmewere.

Maka ihe atụ a, anyị ga-agbanye faịlụ dịka faịlụ RSS nke na-akụda ndị dị iche iche n'okpuru isiokwu nke "ihe" n'ime faịlụ XML. Ná mmalite nke nhazi ahụ, anyị na-enyocha maka aha aha "ihe" na ikenye ihe ederede okwu anyị mgbe achọtara ìgwè ọhụrụ. Ma ọ bụghị ya, anyị na-ebu ụzọ gbanwere mgbanwe anyị maka uru ahụ.

- (void) parser: (NSXMLParser *) parser hụrụCharacters: (NSString *) eriri {
[ElementValue appendString: eriri];
}

Nke a bụ akụkụ dị mfe. Mgbe anyị hụrụ ihe odide, anyị na-agbakwunye anyị na agbanwe agbanwe "ElementValue".

- (void) parser: (NSXMLParser *) parser mereEndElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualifiedName: (NSString *) qName {
ma ọ bụrụ ((elementname bụEqualToString: @ "ihe")) {
[isiokwu addObject: [ihe nnomi]];
} ọzọ {
[ihe setObject: ElementValue forKey: elementName];
}

}

Mgbe anyị mechara nhazi ihe mmewere, ọ dị anyị mkpa ime otu n'ime ihe abụọ: (1) ọ bụrụ na njedebe ikpeazụ bụ "ihe", anyị emechala otu anyị, ya mere, anyị ga-agbakwunye akwụkwọ ọkọwa okwu anyị na "isiokwu" ".

Ma ọ bụ (2) ọ bụrụ na mmewere abụghị "ihe", anyị ga-etinye uru na akwụkwọ ọkọwa okwu anyị na igodo nke kwekọrọ aha aha ahụ. (Nke a pụtara na ọ dịghị mkpa ka onye ọ bụla gbanwere maka mpaghara ọ bụla n'ime faịlụ XML. Anyị nwere ike ịhazi ha ntakịrị.)

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

ma ọ bụrụ na (errorParsing == NO)
{
NSLog (@ "Nhazi XML!");
} ọzọ {
NSLog (@ "Njehie mere n'oge nhazi XML");
}

}

Nke a bụ ọrụ ikpeazụ dị mkpa maka oge anyị na-aga n'ihu. Ọ na-agwụcha akwụkwọ. Ị ga-etinye koodu ọ bụla ịchọrọ ịmecha usoro a ma ọ bụ ihe ọ bụla pụrụ iche ịchọrọ ime ma ọ bụrụ na ihiere.

Otu ihe ngwa ngwa nwere ike ịme ebe a bụ ịchekwa data na / ma ọ bụ XML faịlụ na faịlụ na ngwaọrụ ahụ. N'ụzọ dị otú ahụ, ọ bụrụ na onye ọrụ ahụ adịghị ejikọ na Ịntanetị na oge ọzọ ha na-ebu ngwa ahụ, ha ka nwere ike ịnweta ozi a.

N'ezie, anyị enweghị ike ichefu akụkụ kachasị mkpa: na-agwa ngwa gị iji pinye faịlụ ahụ (na inye ya adreesị weebụ iji chọta ya na!).

Iji malite usoro ahụ, naanị ịkwesịrị ịgbakwunye koodu akara a n'ebe kwesịrị ekwesị ebe ịchọrọ ịme nhazi XML:

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