Nzira yePasse XML Files mu Xcode

Imwe basa iri nyore iro rutsitsi kune zvizhinji zvemafaira ndiko kukwanisa kufambisa mafaira eXML. Uye, neruremekedzo, Xcode inoita kuti zvive nyore kutarisa faira ye XML in Objective-C.

Imwe faira yeCXML inogona kuva nechimwe chinhu kubva pane dheyo yakakosha pamusoro pekushandisa kwako ku RSS feed yewebsite. Vanogonawo kuva nzira yakanaka yekuvandudza mashoko mukati memushandi wenyu wega pakare, nekudarika kudiwa kwekutumira bhinary itsva ku Apple kungowedzera chinhu chitsva pane urongwa.

Saka tinoshandisa sei XML mafaira mu Xcode? Tsanangudzo ine matanho ekugadzirisa zvinoshandiswa kushandiswa, kutanga chirongwa chekushandura XML, kufambisa iyo nzira faira, kutanga kwechimwe chinhu, zvinyorwa (kukosha) mukati mechinhu, kuguma kwechimwe chinhu, uye kuguma kwekutsvaga.

Mumuenzaniso uyu, tichave tichitsvaga faira kubva paInternet kuburikidza nekuipfuura imwe kero yewebhu ( URL ).

Tichatanga nekuvaka bheji re musoro. Uyu muenzaniso wehurukuro yakanyanya musoro musoro weDetail View Mutongi ane zvishoma zvido zvekutsvaga faira redu:

@interface RootViewController: UITableViewController {
DetailViewController * tsanangudzoViewController;

NSXMLParser * rssParser;
NSMutableArray * zvinyorwa;
NSMutableDictionary * chinhu;
NSString * currentElement;
NSMutableString * ElementValue;
BOOL errorParsing;
}

@property (nonatomic, retain) IBOutlet DetailViewController * tsanangudzoViewController;

- (haisi) neXMLFileAtURL: (NSString *) URL;

Icho chirevoXMLFileAtURL basa chinotanga hurongwa kwatiri. Apo inogumisa, iyo NSMutableArray "nyaya" ichabata zvataida. Mhando yacho inoumbwa neduramazwi dzinogona kushandurwa nekiyi dzine chokuita nemazita emumunda mufayela ye XML.

Iye zvino zvatakagadzirisa zvigadziriswa zvinodiwa, tichaenderera mberi kusvika pakusangana kwekuita mu .m file:

- (pasina) parserDidStartDocument: (NSXMLParser *) parser {
NSLog (@ "Faira yakawanikwa uye inotanga");

}

Iri basa rinotanga pakutanga kwekuita. Hapana chikonzero chekuisa chero chinhu mubasa iri, asi kana uchida kuita basa apo faira inotanga kubudiswa, iyi ndiyo yaunogona kuisa code yako.

- (pasina) parutiviXMLFileAtURL: (NSString *) URL
{

NSString * agentString = @ "Mozilla / 5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit / 525.27.1 (KHTML, kufanana neGecko) Version / 3.2.1 Safari / 525.27.1";
NSMutableURLRequest * chikumbiro = [NSMutableURLRequest chikumbiroWithURL:
[NSURL URLWithString: URL]];
[kukumbira setValue: agentString forHTTPHeaderField: @ "User-Agent"];
xmlFile = [NSURLConnection sendSynchronousRequest: bvunza kudzokaResponse: nil error: nil];


nyaya = [[NSMutableArray alloc] init];
errorParsing = HERE;

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

// Iwe unogona kuchinja zvimwe zveizvi zvichienderana nerudzi rwe XML file iwe uri kuparidzira
[rssParserShouldProcessNamespaces: NO];
[rssParser setShouldReportNamespacePrefixes: NO];
[rssParserShouldResolveExternalEntities: NO];

[rssParser parse];

}

Iri basa rinorayira injini kuti idziwe faira pane imwe yekero yewebhu (URL) uye utange nzira yekuiridzirisa.

Tiri kutaurira iyo yakasara server kuti isu tiri Safari inoshandiswa paMac kungova iyo server iri kuedza kutamisa zvakare iPhone / iPad kune mobile version.

Zvisarudzo pamagumo zvakananga kune dzimwe mafayela XML. Yakawanda mafaira e RSS uye mafaira e-XML haazovashanduri.

- (pasina) parser: (NSXMLParser *) parserErrorOccurred: (NSError *) parseError {

NSString * errorString = [NSString stringWithFormat: @ "Nhamba yekutadza% i", [parseError code]];
NSLog (@ "Kukanganisa kuparidzira XML:% @", errorString);


errorParsing = YES;
}

Icho chiri nyore nyore kukanganisa-kutarisa nzira yekugadzirisa iyo ichaisa kukosha kwebhinari kana ikasangana nekanganiso. Iwe unogona kunge uchida chimwe chinhu chakanyanya apa pano zvichienderana nezvauri kuita. Kana iwe uchida kungoita imwe kodeti mushure mokugadziriswa munyaya yekanganiso, kukanganisika kwebhinari yekutadza kunogona kudanwa panguva iyoyo.

- (void) parser: (NSXMLParser *) parser didStartElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualifiedName: (NSString *) qName maitiro: (NSDictionary *) attributeDict {
CurrentElement = [elementName copy];
ElementValue = [[NSMutableString alloc] init];
kana ([elementName isEqualToString: @ "chinhu"]) {
item = [[NSMutableDictionary alloc] init];

}

}

Nyama yemuchina we XML ine zvinhu zvitatu, imwe inomhanya pakutanga kwechimwe chinhu, iyo inomhanya pakati pekuparadzanisa ichocho, uye imwe inomhanya pamagumo echinhu.

Nokuda kwemuenzaniso uyu, tichave tichitsvaga faira yakafanana neFRF mafaira anoputsa zvinhu mumapoka pasi pekutungamira kwe "zvinhu" mukati mefaira re XML. Pakutanga kwekugadzirisa, tiri kutarisa zita rekuti "chinhu" uye kupa shanduro yemashoko edu apo boka idzva rakaonekwa. Kana zvisina kudaro, isu tinotanga kushandura kwedu kushandiswa.

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

Ichi chikamu chiri nyore. Apo patinowana mifananidzo, tinongowedzera ku "variable" yedu "ElementValue".

- (void) parser: (NSXMLParser *) parser didEndElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualifiedName: (NSString *) qName {
kana ([elementName isEqualToString: @ "chinhu"]) {
[zvinyorwa addObject: [kopi yemumwe]];
} zvimwe {
[item setObject: ElementValue forKey: elementName];
}

}

Kana tapedza kugadzira chimwe chinhu, tinoda kuita chimwe chezvinhu zviviri: (1) kana chinhu chekupedzisira chiri "chinhu", tapedza boka redu, saka tichawedzera dudziro yedu kune zvinyorwa zvedu "zvinyorwa ".

Kana (2) kana icho icho chisisiri "chinhu", tichaisa kukosha mune duramazwi redu nekiyi inoenderana nezita rechombo. (Izvi zvinoreva kuti hatidi munhu akasiyana-siyana pamunda wega wega mukati me XML file.Tinokwanisa kuvashandisa zvishoma zvishoma.)

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

kana (kukanganisaParsing == NO)
{
NSLog (@ "XML kushandiswa kwakaitwa!");
} zvimwe {
NSLog (@ "Kukanganisa kwakaitika panguva yekutengesa XML");
}

}

Iri ndiro basa rekupedzisira rinodiwa pakurongedza nguva yedu. Inongopedzisa rugwaro. Iwe uchaisa chero kodhi yega iwe unoda kupedzisa basa iri pano kana chero chinhu chipi zvacho chaunogona kuda kuita kana zvikanganiso.

Chinhu chimwe chete maitiro akawanda angada kuite pano kuchengetedza data uye / kana XML faira kune faira pane imwe device. Nenzira iyo, kana munhu asingashandisi kuIndaneti panguva inotevera pavanenge vachigadzirisa purogiramu, vanogona kuwana izvi.

Zvechokwadi, hatigoni kukanganwa chikamu chakakosha zvikuru: kutaurira chikumbiro chako kuti chiratidze faira (uye ichipa kero yewebhu kuti uiwane pa!).

Kutanga iyo nzira, iwe unongoda kuwedzera iri mutsara wekodhi kune nzvimbo yakakodzera kwaunoda kuita XML kushandiswa:

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