Faʻapefea ona pasia Faʻamatalaga XML i le Xcode

O se tasi o galuega faigofie o le pito i tua o le tele o polokalama o le mafai lea ona pasi faila faila XML. Ma, o le mea e lelei ai, o le Xcode ua faigofie ai ona lafoina se faila XML i le Objective-C.

O se faila XML e mafai ona aofia ai se mea mai faʻamaumauga autu e uiga i lau app i se fafaga RSS mo se 'upega tafaʻilagi. E mafai foi ona avea ma se auala sili e toe faʻafouina ai faʻamatalaga i totonu o lau app, ma faʻafefe ai le manaʻoga e tuʻuina atu se mea fou i Apple e faaopoopo ai se mea fou i se lisi.

E faʻafefea la ona faʻafaigofieina faila XML i le Xcode? O le faagasologa e aofia ai laasaga mo le amataina o fesuiaiga e faʻaaogaina, amataina le faagasologa o le XML parser, fafagaina lena faagasologa o se faila, o le amataga o se mea e tasi, o le amio (taua) i totonu o le elemene, o le iuga o se tasi o elemene, ma le faaiuga o le faagasologa o le sosolo.

I lenei faʻataʻitaʻiga, o le a tatou uuina se faila mai le Initaneti e ala i le pasia o se tuatusi tuatusi faapitoa ( URL ).

Tatou amata i le fausiaina o le faila ulu. O se faʻataʻitaʻiga lea o se faila autu ulutala mo se Detail View Controller ma faʻamaumauga aupito maualalo mo le pasiaina o la matou faila:

@terface RootViewController: UITableViewController {
FaʻamatalagaViewController * detailsViewController;

NSXMLParser * rssParser;
NSMutableArray * tusiga;
NSMutableDictionary * mea;
NSString * currentElement;
NSMutableString * ElementValue;
Faʻasalaga BOOLParsing;
}

@property (nonatomic, taofi) IBOutlet DetailViewController * detailsViewController;

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

O le galuega a le parseXMLFileAtURL o le a amata ai le faagasologa mo i matou. A maeʻa, o le NSMutableArray "mataupu" o le a taofia a tatou faʻamatalaga. O le lisi o le a faia i fomaʻi e le mafaamatalaina e iai ki e fesoʻotaʻi ma igoa o le fanua i le faila XML.

O lenei ua matou setiina ia fesuiaiga e manaʻomia, matou te agai i luma i le fonotaga o le faagasologa i le faila file .m:

- (void) parserDidStartDocument: (NSXMLParser *) parser {
NSLog (@ "Faʻamauina le faila ma amataina");

}

O lenei galuega e amata i le amataga o le faagasologa. E leai se mea e manaʻomia e tuʻuina ai se mea i lenei galuega, ae afai e te manaʻo e fai se galuega pe a amata le failaina o le faila, o le mea lea e te tuʻu ai lau code.

- (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, pei o Gecko) Version / 3.2.1 Safari / 525.27.1";
NSMutableURLRequest * talosaga = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString: URL]];
[talosaga setValue: agentString moHTTPHeaderField: @ "Tagata Faʻatonu"];
xmlFile = [NSURLConnection sendSynchronousRequest: talosaga toe tali maiResponse: nil sese: nil];


tusiga = [[NSMutableArray alloc] init];
seseParsing = NO;

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

// Atonu e te manaʻomia le fesuiaiga o nei mea e faalagolago i le ituaiga faila XML o loʻo e lalagaina
[rssParser setShouldMapolitulafono: NO];
[rssParser setShouldReportNamespacePrefixes: NO];
[rssParser setShouldResolveExternalEntities: NO];

[rssParser parse];

}

O lenei galuega e faatonu ai le enisinia e sii mai se faila i se tuatusi tuatusi patino (URL) ma amata le faagasologa mo le pasiaina.

O loʻo matou taʻu atu i le masini mamao o matou o Safari o loʻo tamoʻe i luga o le Mac, peitaʻi o le a taumafai le server e toe tuusaʻo le iPhone / iPad i se faʻaoga feaveaʻi.

O filifiliga i le faaiuga e patino i nisi faila XML. Ole tele o faila RSS ma faila faila XML o le a le manaʻomia latou faʻafesoʻotaʻi.

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

NSString * errorString = [NSString stringWithFormat: @ "Faʻailoga code% i", [parseError code]];
NSLog (@ "Faʻasalaga faʻamalosi XML:% @", errorString);


seseParsing = IOE;
}

O se faʻataʻitaʻiga faigofie-siakiina o le taʻavale lea o le a seti ai se tau aogā pe a feagai ma se mea sese. Atonu e te manaʻomia se isi mea sili atu faʻapitoa iinei e faalagolago i mea o loʻo e faia. Afai e te manaʻomia le tamomoʻeina o se faʻasologa pe a maeʻa ona fai i le tulaga o le mea sese, e mafai ona valaʻau le sese o le numera binary error i lena taimi.

- (void) parser: (NSXMLParser *) parser e Faʻatonuina: (NSString *) elemeneNamea namespaceURI: (NSString *) namespaceURI igoaName: (NSString *) igoaNName: (NSDictionary *) attributeIa tusia {
currentElement = [kopi elemene];
ElementValue = [[NSMutableString alloc] init];
pe afai ((element elementame isEqualToString: @ "mea")) {
mea = [[NSMutableDictionary tufatufa] init];

}

}

O le aano o le pusa o le XML e aofia ai galuega e tolu, o se tasi e amata i le amataga o se tasi elemene, tasi e lele i le ogatotonu o le tapeina o le elemene, ma le tasi e tafe i le pito o le elemene.

Mo lenei faʻataʻitaʻiga, o le a tatou faia se faila e pei o faila RSS e faʻamavaeina elemene i vaega i lalo o le ulutala "mea" i totonu o le faila XML. I le amataga o le gaioiga, o loʻo matou siaki mo le igoa elemene "mea" ma le vavaeina o a matou lomifefiloi oloa pe a iloa se vaega fou. A leai, tatou te amataina la tatou fesuiaiga mo le tau.

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

O le vaega faigofie lea. A tatou maua ni faʻamaumauga, tatou te faʻapipiʻi atu i la tatou fesuiaiga "ElementValue".

- (void) parser: (NSXMLParser *) parser iSElement: (NSString *) elemeneNamea igoapaceURI: (NSString *) namespaceURI faʻamaoniaName: (NSString *) qName {
pe afai ((element elementame isEqualToString: @ "mea")) {
[tusiga faaopoopoObject: [kopi o le kopi]];
} aisi {
[aitema setObject: ElementValue forKey: elementName];
}

}

A maeʻa ona tatou gaosia se elemene, e tatau ona tatou faia se tasi o mea e lua: (1) pe afai o le elemene elemene "mea", ua maeʻa a tatou kulupu, o le a tatou faaopoopoina la tatou lolomifefiloi i le tatou lisiina o "mataupu ".

Pe (2) afai o le elemene e le o se "mea", o le a tatou setiina le taua i totonu o lo tatou lolomifefiloi ma se ki e fetaui ma le igoa o le elemene. (O lona uiga tatou te le manaʻomia se fesuiaiga taʻitasi mo vaega taʻitasi i totonu o le faila XML. E mafai ona tatou faʻasolosolo malie atu.)

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

afai (seseParsing == NO)
{
NSLog (@ "Faʻamaumauga XML ua maeʻa!");
} aisi {
NSLog (@ "Ua tupu se mea sese i le faagasologa o le XML");
}

}

O le galuega mulimuli lenei e manaʻomia mo a tatou masani masani. E naʻo le faʻamaeʻaina o le pepa. O le ae tuʻuina soʻo se faʻamaoniga e te manaʻo e faʻauma ai le faagasologa iinei poʻo soo se mea faʻapitoa atonu e te manaʻo e fai i le mea sese.

O le tasi mea e tele mea e ono manao e fai iinei o le teuina o faʻamaumauga ma / poʻo le XML faila i se faila i le masini. I lena auala, afai e le fesoʻotaʻi le tagata faʻaoga i le Initaneti i le isi taimi latou te utaina ai le app, e mafai lava ona maua i lenei faʻamatalaga.

Ioe, e le mafai ona galo ia i tatou le vaega e sili ona taua: taʻuina lau talosaga e tuʻuina le faila (ma tuʻuina atu se tuatusi imeli e maua ai!).

Ina ia amataina le faagasologa, na o lou manaʻo e faʻaopopo lenei laina o le code i le nofoaga talafeagai e te manaʻo ai e fai le XML processing:

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