Bi a ṣe le ṣawari faili XML ni Xcode

Iṣẹ-ṣiṣe kan ti o jẹ egungun si ọpọlọpọ awọn elo ni agbara lati pin awọn faili XML. Ati, daadaa, Xcode mu ki o rọrun rọrun lati pin folda XML ni Objective-C.

Faili XML le ni ohun kankan lati awọn alaye akọkọ nipa app rẹ si kikọ sii RSS fun aaye ayelujara kan. Wọn tun le jẹ ọna ti o dara julọ lati ṣe imudojuiwọn alaye laarin apamọ rẹ, nitorina o ṣe idiwọ lati ṣe atunṣe titun alakomeji si Apple nìkan lati fi ohun kan kun si akojọ kan.

Nítorí náà, báwo ni a ṣe ń ṣe fáìlì àwọn fáìlì XML sínú Xcode? Ìlànà náà ní àwọn àgbékalẹ fún ṣíṣe kíkọ àwọn ayípadà láti lo, ṣíṣe ilana ìlànà ìparí XML, ṣíṣe ilana yẹn ni fáìlì, ìbẹrẹ ohun kọọkan, opin ti ẹni kọọkan, ati opin ti awọn ilana parsing.

Ni apẹẹrẹ yi, a yoo fi faili kan pamọ lati Intanẹẹti nipa fifiranṣẹ adirẹsi ayelujara kan pato ( URL ).

A yoo bẹrẹ pẹlu sisọ faili faili. Eyi jẹ apẹẹrẹ ti faili akọle ti o ṣe pataki fun Oluṣakoso Wo Alaye pẹlu awọn ibeere ti o kere ju fun sisẹ faili wa:

Gbongbo RootViewController: UITableViewController {
DetailViewController * detailViewController;

NSXMLParser * rssParser;
NSMutableArray * awọn ohun elo;
NSMutableDictionary * ohun kan;
NSString * currentElement;
NSMutableString * ElementValue;
Ṣiṣe aṣiṣe ti BOOL;
}

@property (nonatomic, idaduro) DetailViewController IBOt * detailViewController;

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

Iṣẹ iṣẹ parseXMLFileAtURL yoo bẹrẹ ilana fun wa. Nigbati o ba pari, awọn "ohun elo" NSMutableArray yoo mu data wa. Awọn orun naa yoo wa pẹlu awọn iwe-itumọ ti ko lewu pẹlu awọn bọtini ti o nii ṣe awọn orukọ aaye ni faili XML.

Nisisiyi pe a ti ṣeto awọn oniyipada ti o nilo, a yoo lọ si ipade ti ilana ni faili .m:

- (ofo) parserDidStartDocument: (NSXMLParser *) Parser {
NSLog (@ "Oluṣakoso ti o ri ati sisun bẹrẹ");

}

Iṣẹ yii nṣakoso ni ibẹrẹ ti ilana naa. Ko si ye lati fi nkankan sinu iṣẹ yii, ṣugbọn ti o ba fẹ ṣe iṣẹ-ṣiṣe nigbati faili ba bẹrẹ lati tan, eyi ni ibi ti iwọ yoo fi koodu rẹ sii.

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

NSString * agentString = @ "Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_5_6; en-wa) AppleWebKit / 525.27.1 (KHTML, bi Gecko) Version / 3.2.1 Safari / 525.27.1";
NSMutableURLRequest * ìbéèrè = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString: URL]];
[ìbéèrè setValue: agentString funHTTPHeaderField: @ "Olumulo-Agent"];
xmlFile = [NSURLConnection sendSynchronousRequest: ìbéèrè padaYa idahun: aṣiṣe nil: nil];


awọn ohun elo = [[NSMutableArray alloc] init];
errorParsing = KO;

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

// O le nilo lati tan diẹ ninu awọn wọnyi lori da lori iru faili XML ti o n gbe
[rssParser setShouldProcessNamespaces: KO];
[rssParser setShouldReportNamespacePrefixes: KO];
[rssParser setShouldResolveExternalEntities: KO];

[rssParser parse];

}

Išẹ yii n fun engine lati gba faili kan ni adiresi ayelujara kan (URL) ati bẹrẹ ilana fun sisọ.

A n sọ fun olupin latọna jijin pe a jẹ Safari nṣiṣẹ lori Mac bi o ṣe jẹ pe olupin n gbiyanju lati ṣe atunto iPad / iPad si ẹya alagbeka kan.

Awọn aṣayan ni opin wa ni pato si awọn faili XML kan. Ọpọlọpọ awọn faili RSS ati awọn faili XML jeneriki kii yoo nilo wọn tan-an.

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

NSString * errorString = [NSString stringWithFormat: @ "Aṣiṣe koodu% i", [parseError code]];
NSLog (@ "Aṣiṣe ti o nfa XML:% @", errorString);


errorParsing = BẸẸNI;
}

Eyi jẹ aṣiṣe aṣiṣe-iṣaṣayẹwo wiwa ti yoo ṣeto iye owo alakomeji ti o ba pade aṣiṣe kan. O le nilo nkankan diẹ sii pato nibi da lori ohun ti o n ṣe. Ti o ba nilo lati ṣiṣẹ diẹ ninu awọn koodu lẹhin ti iṣeduro ni ọran ti aṣiṣe, a le pe ni aṣiṣe alakomeji errorParsing ni akoko yẹn.

- (ofo) parser: (NSXMLParser *) parser didStartElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI nṣiṣẹName: (NSString *) awọn orukọ ID: (NSDictionary *) attributeDict {
lọwọlọwọElement = [elementName daakọ];
ElementValue = [[NSMutableString alloc] init];
ti o ba jẹ ([elementNameEqualToString: @ "ohun kan"]) {{
ohun kan = [[NSMutableDictionary alloc] init];

}

}

Eran ti Parser XML ni awọn iṣẹ mẹta, ọkan ti o nṣakoso ni ibẹrẹ ti ẹya ara ẹni, ọkan ti o nṣakoso lakoko aarin fifọ awọn ero, ati ọkan ti nṣakoso ni opin ti ano.

Fun apẹẹrẹ yii, awa yoo ṣe faili ti o jọmọ awọn faili RSS ti o fọ awọn eroja si awọn ẹgbẹ labẹ awọn akọle "awọn ohun kan" laarin faili XML. Ni ibẹrẹ ti processing, a n ṣayẹwo fun orukọ orukọ "ohun" ati ipinnu iwe-itumọ ohun wa nigbati o ba ri ẹgbẹ titun. Bi bẹẹkọ, a kọkọ iyatọ wa fun iye naa.

- (ofo) Parser: (NSXMLParser *) Parser foundCharacters: (NSString *) string {
[ElementValue appendString: okun];
}

Eyi ni apakan ti o rọrun. Nigba ti a ba ri ohun kikọ, a fi wọn kun si iyipada wa "ElementValue".

- (ofo) parser: (NSXMLParser *) Parser didEndElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI nṣiṣẹName: (NSString *) qName {
ti o ba jẹ ([elementNameEqualToString: @ "ohun kan"]) {{
[awọn ohun kan fiObject: [ohun kan ẹda]];
} miran {
[ohun kanDobject: ElementValue forKey: elementName];
}

}

Nigba ti a ba ti pari fifiranṣẹ nkan kan, a nilo lati ṣe ọkan ninu awọn ohun meji: (1) ti o ba jẹ pe "ohun kan", a ti pari ẹgbẹ wa, nitorina a yoo ṣe afikun iwe-itumọ wa si titobi "awọn iwe ".

Tabi (2) ti o ba jẹ pe ano ko "ohun kan", a yoo ṣeto iye ninu iwe-itumọ wa pẹlu bọtini ti o baamu orukọ eleri naa. (Eyi tumọ si pe a ko nilo iyipada kọọkan fun aaye kọọkan ninu faili XML.) A le ṣe itọsọna wọn diẹ sii ni agbara.)

- (ofo) parserDidEndDocument: (NSXMLParser *) Parser {

ti o ba ti (errorParsing == NO)
{
NSLog ("XML processing ṣe!");
} miran {
NSLog (@ "aṣiṣe lodo lakoko ṣiṣe processing XML");
}

}

Eyi ni iṣẹ-ṣiṣe ti o gbẹkẹle fun iṣiro-ṣiṣe ti wa. O pari opin iwe naa nikan. Iwọ yoo fi koodu eyikeyi ti o fẹ pari gbogbo ilana yii tabi ohunkohun pataki ti o le fẹ ṣe ninu ọran aṣiṣe.

Ọkan ohun ọpọlọpọ awọn apps le fẹ lati ṣe nibi ni lati fi awọn data ati / tabi faili XML si faili kan lori ẹrọ. Iyẹn ọna, ti o ba jẹ pe asopọ ko ni asopọ si Intanẹẹti nigbamii ti wọn ba ṣafẹnti ìṣàfilọlẹ náà, wọn tun le gba ni alaye yii.

Dajudaju, a ko le gbagbe apakan pataki julọ: sọ ohun elo rẹ lati fi faili naa pamọ (ati fifun adirẹsi ayelujara kan lati ri i ni!).

Lati bẹrẹ ilana naa, o nilo lati fi koodu ila yii kun si ibi ti o yẹ nibiti o fẹ ṣe processing XML:

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