Xcode இல் எக்ஸ்எம்எல் கோப்புகளை எவ்வாறு பிரிப்பது

பல பயன்பாடுகள் முதுகெலும்பாக இருக்கும் ஒரு எளிய பணி XML கோப்புகளை அலசுவதற்கான திறமையாகும். மற்றும், அதிர்ஷ்டவசமாக, Xcode குறிக்கோள்-சி ஒரு எக்ஸ்எம்எல் கோப்புறையை அதை ஒப்பீட்டளவில் எளிதாக்குகிறது.

எக்ஸ்எம்எல் கோப்பில் உங்கள் பயன்பாட்டைப் பற்றிய அடிப்படை தரவிலிருந்து ஒரு வலைத்தளத்திற்கான RSS ஊட்டத்திற்கு எதையுமே கொண்டிருக்க முடியாது. அவை உங்கள் பயன்பாட்டிற்குத் தொலைவிலுள்ள தகவலை புதுப்பிப்பதற்கான மிகச்சிறந்த வழியாகும், இதன்மூலம் ஒரு புதிய உருப்படியை பட்டியலுக்கு ஒரு புதிய உருப்படியைச் சேர்க்க, ஆப்பிளின் புதிய பைனரி சமர்ப்பிக்க வேண்டிய தேவையை தவிர்த்துக் கொள்ளலாம்.

எக்ஸ்எம்எக்ஸில் எக்ஸ்எம்எல் கோப்புகளை எப்படிச் செயல்படுத்துவது? இந்த செயல்முறை பயன்படுத்தப்பட வேண்டிய மாறிகள் துவக்கத்தில் எக்ஸ்எம்எல் பாகுபடுத்தி செயல்முறை தொடங்கி, ஒரு கோப்பு, ஒரு தனி உறுப்பு துவக்கம், உறுப்பு உள்ள எழுத்துக்கள் (மதிப்பு) ஒரு தனி உறுப்பு இறுதியில், மற்றும் பாகுபடுத்தல் செயல்பாட்டின் முடிவு.

இந்த எடுத்துக்காட்டில், ஒரு குறிப்பிட்ட இணைய முகவரி ( URL ) கடந்து இணையத்திலிருந்து ஒரு கோப்பைப் பாகுபடுத்திப் பார்ப்போம்.

தலைப்பு கோப்பை உருவாக்குவதன் மூலம் தொடங்குவோம். எங்கள் கோப்பு பாகுபடுத்தி குறைந்தபட்ச தேவைகள் ஒரு விரிவாக காட்சி கட்டுப்பாட்டாளர் ஒரு அடிப்படை தலைப்பு கோப்பு ஒரு உதாரணம் இது:

@interface RootViewController: UITableViewController {
விரிவாக ViewController * விவரம் ViewController;

NSXMLParser * rssParser;
NSMutableArray * கட்டுரைகள்;
NSMutableDictionary * உருப்படியை;
NSString * தற்போதைய விளக்கம்;
NSMutableString * ElementValue;
BOOL பிழைப் பார்சிங்;
}

@ நம்பகத்தன்மை (nonatomic, தக்கவைத்து) IBOutlet விவரம் ViewController * detailViewController;

- (வெற்றிடத்தை) parseXMLFileAtURL: (NSString *) URL;

ParseXMLFileAtURL செயல்பாடு எங்களுக்கு செயல்முறை தொடங்கும். அது முடிந்ததும், NSMutableArray "கட்டுரைகள்" எங்கள் தரவை வைத்திருக்கும். எக்ஸ்எம்எல் கோப்பில் புலம் பெயர்கள் தொடர்பான விசைகள் மூலம் mutable அகராதிகள் உருவாக்கப்படும்.

இப்போது நாம் மாறிகள் அமைக்க வேண்டும் என்று, நாம் .m கோப்பில் செயல்முறை சந்திக்க செல்ல வேண்டும்:

- (வெற்றிடத்தை) parserDidStartDocument: (NSXMLParser *) பாகுபடுத்தி {
NSLog (@ "கோப்பு காணப்படும் மற்றும் பாகுபடுத்தல் தொடங்கியது");

}

இந்த செயல்பாடு செயல்பாட்டின் ஆரம்பத்தில் இயங்குகிறது. இந்த செயல்பாட்டில் எதையும் வைக்க வேண்டிய அவசியமில்லை, ஆனால் கோப்பு தொடங்கும் போது நீங்கள் ஒரு பணியை செய்ய விரும்பினால், இது உங்கள் குறியீட்டை எங்கே வைத்திருக்கும்.

- (வெற்றிடத்தை) parseXMLFileAtURL: (NSString *) URL
{

NSString * AgentString = @ "Mozilla / 5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit / 525.27.1 (KHTML, கெக்கோ போன்ற) பதிப்பு / 3.2.1 சஃபாரி / 525.27.1";
NSMutableURLRequest * கோரிக்கை = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString: URL]];
[கோரிக்கை setValue: agentString forHTTpheaderField: @ "பயனர் முகவர்"];
xmlFile = [NSURLConnection sendSynchronousRequest: கோரிக்கை returningResponse: nil பிழை: nil];


கட்டுரைகள் = [[NSMutableArray alloc] init];
errorParsing = எந்த;

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

// நீங்கள் பாகுபடுத்தி கொண்டிருக்கும் XML கோப்பின் வகையைப் பொறுத்து இவைகளில் சிலவற்றை நீங்கள் திரும்பச் செய்ய வேண்டியிருக்கலாம்
[rssParser setShouldProcessNamespaces: NO];
[rssParser setShouldReportNamespacePrefixes: NO];
[rssParser setShouldResolveExternalEntities: NO];

[rssParser parse];

}

இந்த செயல்பாடு ஒரு குறிப்பிட்ட இணைய முகவரியில் (URL) ஒரு கோப்பை பதிவிறக்க மற்றும் அது பாகுபடுத்தி செயல்பாட்டை தொடங்க இயந்திரம் அறிவுறுத்துகிறது.

சேவையகம் ஐபோன் / ஐபாட் ஐ மொபைல் பதிப்பிற்கு திருப்பித் திருப்ப முயற்சிக்கையில், நாங்கள் Mac இல் இயங்கும் சஃபாரி என்று தொலை சேவையகத்தை சொல்கிறோம்.

முடிவில் உள்ள விருப்பங்கள் சில எக்ஸ்எம்எல் கோப்புகளுக்கானவை. பெரும்பாலான RSS கோப்புகள் மற்றும் பொதுவான எக்ஸ்எம்எல் கோப்புகள் அவற்றை இயக்கத் தேவையில்லை.

- (வெற்றிடத்தை) பாகுபடுத்தி: (NSXMLParser *) பாகுபடுத்தப்பட்ட parseError ஆதரவு: (NSERror *) parseError {

NSString * errorString = [NSStting stringWithFormat: @ "பிழை குறியீடு% i", [parseError code];
NSLog (@ "எக்ஸ்எம்எல் பாகுபடுத்தல் பிழை:% @", errorString);


errorParsing = ஆம்;
}

இது ஒரு எளிய பிழையான சரிபார்ப்பு ரூட்டிங் ஆகும், அது ஒரு பிழை ஏற்பட்டால் பைனரி மதிப்பை அமைக்கும். நீங்கள் என்ன செய்கிறீர்கள் என்பதைப் பொறுத்து இங்கே இன்னும் குறிப்பிடத்தக்க ஏதாவது தேவைப்படலாம். பிழை வழக்கில் செயலாக்கத்திற்கு பிறகு சில குறியீட்டை இயக்கினால், பிழையான மாறிகள் அந்த நேரத்தில் அழைக்கப்படும்.

- (NSSXMLParser *) பாகுபடுத்தி செய்ததுபயன்படுத்தி: (NSString *) elementName namespaceURI: (NSString *) namespaceURI தகுதி பெயர்: (NSString *) qName பண்புக்கூறுகள்: (NSDictionary *) attributeDict {
currentElement = [elementName copy];
ElementValue = [[NSMutableString alloc] init];
([elementName isEqualToString: @ "உருப்படியை"]) {
உருப்படி = [[NSMutableDictionary alloc] init];

}

}

எக்ஸ்எம்எல் பாகுபாட்டின் இறைச்சி மூன்று செயல்பாடுகளை கொண்டிருக்கிறது, அது ஒரு தனி உறுப்பு தொடக்கத்தில் இயங்கும் ஒன்று, உறுப்பு பாகுபடுத்தி நடுநிலையில் இயங்கும் ஒரு மற்றும் உறுப்பு முடிவில் இயங்கும் ஒரு.

இந்த எடுத்துக்காட்டுக்கு, எக்ஸ்எம்எல் கோப்பில் உள்ள "உருப்படிகளின்" தலைப்பின்கீழ் உள்ள குழுக்களாக உள்ள உறுப்புகளை உடைக்கும் RSS கோப்புகளை ஒத்த ஒரு கோப்பை நாம் பாகுபடுத்திப் போடுவோம். செயலாக்கத்தின் தொடக்கத்தில், நாம் "உருப்படியை" என்ற உறுப்பு பெயரை சோதித்து, ஒரு புதிய குழு கண்டறியப்பட்டபோது எங்கள் உருப்படியை அகராதியில் ஒதுக்கீடு செய்கிறோம். இல்லையெனில், நாம் மதிப்பை நமது மாறி துவக்க.

- (வெற்றிடப்படாத) பாகுபடுத்தி: (NSXMLParser *) பாகுபடுத்தி கண்டுபிடிக்கப்பட்டதுதனிகள்: (NSString *) சரம் {
[ElementValue appendString: சரம்];
}

இது எளிதான பகுதியாகும். நாம் கதாபாத்திரங்களைக் கண்டால், அவற்றை நமது மாறி "ElementValue" க்கு சேர்க்கலாம்.

- (வெற்றிடத்தை) பாகுபடுத்தி: (NSXMLParser *) பாகுபடுத்தி செய்ததுஎன்எல்எல்மெண்ட்: (NSString *) elementName namespaceURI: (NSString *) namespaceURI தகுதி பெயர்: (NSString *) qName {
([elementName isEqualToString: @ "உருப்படியை"]) {
[கட்டுரைகள் addObject: [item copy]];
} வேறு {
[உருப்படி அமைக்கப்பட்டதுபொருகுப்பொருள்: அங்கம்வலுக்காக forkey: elementName];
}

}

நாம் ஒரு உறுப்பை செயலாக்க முடிந்ததும், இரண்டு காரியங்களில் ஒன்றை செய்ய வேண்டும்: (1) இறுதி உறுப்பு "உருப்படியை" செய்திருந்தால், நாங்கள் எங்கள் குழுவை முடித்துவிட்டோம், எனவே எங்களின் அகராதியில் " ".

அல்லது (2) உறுப்பு "உருப்படி" இல்லை என்றால், எங்களின் அகராதியில் மதிப்பை அமைக்க வேண்டும், அது ஒரு உறுப்பு பெயருடன் பொருந்தும். (அதாவது எக்ஸ்எம்எல் கோப்பில் ஒவ்வொரு புலத்திற்கும் ஒரு தனிப்பட்ட மாறி தேவையில்லை, அவற்றை இன்னும் கொஞ்சம் மாறும் வரை நாம் செயல்படுத்தலாம்.)

- (வெற்றிடப்படாத) parserDidEndDocument: (NSXMLParser *) பாகுபடுத்தி {

என்றால் (பிழைத்திருத்தங்கள் == இல்லை)
{
NSLog (@ "எக்ஸ்எம்எல் செயலாக்கமானது!");
} வேறு {
NSLog (எக்ஸ்எம்எல் செயலாக்கத்தின்போது "பிழை ஏற்பட்டது");
}

}

இது எங்கள் பாகுபடுத்தி நடைமுறைக்கு தேவையான கடைசி செயல்பாடு. இது வெறுமனே ஆவணம் முடிவடைகிறது. நீங்கள் செயல்முறையை முடிக்க விரும்பும் எந்த குறியீடும் அல்லது தவறு செய்தால் நீங்கள் செய்ய வேண்டிய சிறப்பு எதுவுமே போட வேண்டும்.

பல பயன்பாடுகள், இங்கே செய்ய விரும்பும் ஒன்று தரவு மற்றும் / அல்லது எக்ஸ்எம்எல் கோப்பு சாதனத்தில் ஒரு கோப்பில் சேமிப்பதாகும். அந்த வழியில், பயனர் இணையத்தில் இணைக்கப்படவில்லை என்றால் அடுத்த முறை அவர்கள் பயன்பாட்டை ஏற்றினால், அவர்கள் இந்த தகவலை பெற முடியும்.

நிச்சயமாக, மிக முக்கியமான பகுதியை மறந்துவிட முடியாது: உங்கள் விண்ணப்பத்தை கோப்பினை அலசுவதற்கு (மற்றும் அதை கண்டுபிடிப்பதற்காக ஒரு வலை முகவரியை கொடுக்கும்!) சொல்லுங்கள்.

செயல்முறையைத் தொடங்க, நீங்கள் எக்ஸ்எம்எல் செயலாக்கத்தை செய்ய விரும்பும் சரியான இடத்திற்கு இந்த வரி கோட்டை சேர்க்க வேண்டும்:

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