Kamoo u ka khethollang li-XML Files tsa Xcode

Mosebetsi o mong o bonolo oo e leng methapo ea lipapali tse ngata ke bokhoni ba ho bapisa lifaele tsa XML. Hape, ka lehlohonolo, Xcode e etsa hore e be bonolo ho pheta file ea XML ka Sepheo-C.

Fomoro ea XML e ka ba le ntho leha e le efe ho tloha lefapheng la hau la lisebelisoa ho fepa RSS ho website. E ka boela ea e-ba tsela e ntle ea ho ntlafatsa tlhahisoleseding e ka hare ho kopo ea hau ka nako ea hau, kahoo e hatisa tlhoko ea ho romella binary e ncha ho Apple feela ho kenya ntho e ncha lethathamong.

Kahoo re sebetsana joang le lifaele tsa XML ho Xcode? Tshebetso e na le mehato ea ho qalisa mefuta e lokelang ho sebelisoa, ho qala ts'ebetso ea mahlaseli a XML, ho fepa ts'ebetso faele, qalo ea ntho e itseng, litlhaku (bohlokoa) ho fela ha ntho e 'ngoe le e' ngoe, le qetellong ea ts'ebetsong.

Mohlala ona, re tla be re bapisa faele e tsoang Inthaneteng ka ho e fetisetsa ka aterese e itseng ea web ( URL ).

Re tla qala ka ho haha ​​faele ea hlooho. Ena ke mohlala oa faele ea sehlooho e ka sehloohong bakeng sa Detail View Controller e nang le litlhoko tse fokolang tsa ho finyella faele ea rona:

@interface RootViewController: UITableViewController {
DetailViewController * tlhahisolesedingViewController;

NSXMLParser * rssParser;
Lihlooho tsa NSMutableArray *;
NSMutableDictionary * ntlha;
NSString * CurrentElement;
NSMutableString * ElementValue;
BOOL phosoParsing;
}}

@property (nonatomic, boloka) IBOutlet DetailViewController * tlhahisolesedingViewController;

- (ha ho letho) kaXMLFileAtURL: (NSString *) URL;

Mosebetsi oa parseXMLFileAtURL o tla qala tshebetso ho rona. Ha e fela, "lihlooho" tsa NSMutableArray li tla boloka dintlha tsa rona. Letoto le tla etsoa ka dikishinari tse fetoletsoeng ka linotlolo tse amanang le mabitso a tšimo ka faele ea XML.

Hona joale kaha re emisitse mefuta e fapaneng e hlokahalang, re tla fetela pele ho ts'oanang le tshebetso ya .m file:

- (ha ho joalo) parserDidStartDocument: (NSXMLParser *) parser {
NSLog (@ "File e fumanoeng le e qalileng e qalile");

}}

Mosebetsi ona o qala qalong ea tshebetso. Ha ho hlokahale hore u kenye ntho leha e le efe mosebetsing ona, empa haeba u batla ho etsa mosebetsi ha faele e qala ho felisoa, ke hona moo u ka behang khoutu ea hau teng.

- (ha ho letho) kaXMLFileAtURL: (NSString *) URL
{

NSString * agentString = @ "Mozilla / 5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit / 525.27.1 (KHTML, joaloka Gecko) Version / 3.2.1 Safari / 525.27.1";
NSMutableURLRequest * kōpa = [NSMutableURLRequest kōpoWithURL:
[NSURL URLWithString: URL]];
[kopa sethaleng: agentString forHTTPHeaderField: @ "Moetsi-Moemeli"];
xmlFile = [NSURLConnection sendSynchronousRequest: kopa khutlisetsoe: phoso ea letho: nil];


lihlooho = [[NSMutableArray alloc] init];
errorParsing = NO;

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

// Ho ka 'na ha hlokahala hore u fetole tse ling tsa tsona ho itšetlehile ka mofuta oa file ea XML eo u e bapisang
[rssParserShouldProProcessNamespace: NO];
[rssParser setShouldReportNamespacePrefixes: NO];
[rssParserToHohlobaKe ka hohleLintho tse ka hare: HAO];

[rssParser parse];

}}

Mosebetsi ona o laela enjene hore e lokolle faele ho aterese e itseng ea web (URL) mme e qale mokhoa oa ho e bapisa.

Re bolella seva se hōle hore re Safari e mathang ka Mac feela haeba seva se leka ho khutlisetsa iPhone / iPad to mobile version.

Dikgetho qetellong ke tse tobileng ho di-file tse itseng tsa XML. Boholo ba li-RSS le lifaele tsa khale tsa XML ha li hloke hore li bulehe.

- (ha ho na letho) parser: (NSXMLParser *) parerErrorOferered: (NSError *) parseError {

NSString * errorString = [NSString stringWithFormat: @ "Khopolo ea phoso% i", [parseErorror code]];
NSLog (@ "Phoso ka parsing XML:% @", phosoString);


errorParsing = YES;
}}

Ena ke mokhoa o bonolo oa ho hlahloba phoso o tla beha bohlokoa ba binary haeba o kopana le phoso. U ka 'na ua hloka ntho e tobileng mona ho itšetlehile ka seo u se etsang. Haeba o hloka feela ho matha code e itseng ka mor'a ho sebetsana le phoso, phoso ea binaryParsing e ka bitsoa ka nako eo.

- (ha ke khone) parser: (NSXMLParser *) parser didStartElement: (NSString *) elementName namespaceURI: (NSString *) namepaceURI qualifiedName: (NSString *) qName attributes: (NSDictionary *) attributeDict {
hona joaleElement = [element elementName];
ElementValue = [[NSMutableString alloc] init];
haeba ([elementName isEqualToString: @ "ntho"]) {
item = [[NSMutableDictionary alloc] init];

}}

}}

Nama ea sesebelisoa sa XML e na le lisebelisoa tse tharo, e leng e qalang qalong ea ntho e 'ngoe le e' ngoe, e tsamaeang nakong ea bohareng ba ho tsamaisa ntlha, 'me e matha qetellong ea ntlha.

Bakeng sa mohlala ona, re tla bapisa faele e tšoanang le li-faele tsa RSS tse senyang likarolo ka lihlopha tlas'a sehlooho sa "lintho" ka har'a file ea XML. Qalong ea ho sebetsana, re hlahloba lebitso la "elements" le ho arolela dikishinari ea ntlha ha sehlopha se secha se fumanoa. Ho seng joalo, re qala mochine o feto-fetohang bakeng sa bohlokoa.

- (ha e na thuso) parser: (NSXMLParser *) e fumanoang ka li-scriptCraracters: (NSString *) string {
[ElementValue appendString: khoele];
}}

Ena ke karolo e bonolo. Ha re fumana libapali, re li kenya feela ho "ElementValue" ea rona e sa tšoaneng.

- (ha ho joalo) parser: (NSXMLParser *) parser didEndElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualiName: (NSString *) qName {
haeba ([elementName isEqualToString: @ "ntho"]) {
[lihlooho tse ling ho kenyelletsaObject: [kopi ea ntho]];
} hape {
[item setObject: ElementValue for Key: elementName];
}}

}}

Ha re qetile ho sebetsana le ntho e itseng, re lokela ho etsa ntho e 'ngoe ea lintho tse peli: (1) haeba ntho e qetellang e le "ntho", re qetile sehlopha sa rona, kahoo re tla eketsa dikishinari tsa rona ho "lihlooho tsa rona" ".

Kapa (2) haeba ntlha e sa "ntho", re tla beha bohlokoa ho dikishinari tsa rona ka senotlolo se lumellanang le lebitso la sehlooho. (Sena se bolela hore ha re hloke mocha o mong le o mong bakeng sa tšimo ka 'ngoe ho faele ea XML. Re ka e sebetsana ka matla haholo.)

- (ha e na thuso) papali e nepahetsengTlhahiso: (NSXMLParser *) parser {

haeba (phosoParsing == NO)
{
NSLog (@ "tshebetso ea XML e entsoe!");
} hape {
NSLog (@ "Phoso e hlahile nakong ea tshebetso ya XML");
}}

}}

Ena ke mosebetsi oa ho qetela o hlokahalang bakeng sa kemiso ea rona ea ho tsamaea. E felisa feela tokomane eo. U tla beha khoutu leha e le efe eo u batlang ho e qeta mona kapa ntho leha e le efe e khethehileng eo u ka ratang ho e etsa haeba ho na le phoso.

Ntho e 'ngoe e ngata eo marang-rang a ka' nang a batla ho e etsa mona ke ho boloka lintlha le / kapa file ea XML ho faele e sebelisoa. Ka tsela eo, haeba mosebeletsi a sa kopane le Inthanete nakong e tlang ha ba laola thepa, ba ntse ba ka fumana boitsebiso bona.

Ha e le hantle, re ke ke ra lebala karolo ea bohlokoa ka ho fetisisa: ho bolella kopo ea hau ho bapisa faele (le ho e fa aterese ea websaete ho e fumana!).

Ho qala tshebetso, o hloka feela ho eketsa mohala ona oa khoutu sebakeng se loketseng moo u batlang ho etsa ts'ebetsong ea XML:

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