Momwe Mungasamalire Ma XML Files mu Xcode

Ntchito yosavuta yomwe imagwiritsa ntchito mapulogalamu ambiri ndikutha kufotokoza mafayilo a XML. Ndipo, mwatsoka, Xcode imapangitsa kuti zikhale zovuta kufotokoza fayilo ya XML mu Cholinga-C.

Fayilo ya XML ikhoza kukhala ndi chirichonse kuchokera ku deta yoyamba ponena za pulogalamu yanu ku RSS feed kwa webusaitiyi. Zingakhalenso njira zabwino zowonjezeramo zowonjezera mkati mwa pulogalamu yanu kutali, motero kupyolera kufunika koyika kanema watsopano kwa Apple kungoonjezera chinthu chatsopano pandandanda.

Kodi timagwiritsa ntchito bwanji mafayilo a XML ku Xcode? Njirayi imakhala ndi njira zoyenera kuyambitsira zoyenera kugwiritsa ntchito, kuyambitsa njira ya XML, kuyambitsa ndondomeko fayilo, chiyambi cha chinthu china, zilembo (mtengo) mkati mwake, mapeto a chinthu chokha, ndi mapeto a kukambirana.

Mu chitsanzo ichi, tidzakhala tikuyang'ana fayilo kuchokera pa intaneti ndikuchidutsa pa intaneti ( URL ).

Tiyamba ndi kumanga fayilo yamutu. Ichi ndi chitsanzo cha fayilo yamutu yoyenera kwambiri kwa Detail View Controller ndi zofunikira zochepa zogwiritsa ntchito fayilo yathu:

@interface RootViewController: UITableViewController {
DetailViewController * tsatanetsataneViewController;

NSXMLParser * rssParser;
Nkhani za NSMutableArray *;
NSMutableDictionary * chinthu;
NSString * currentElement;
NSMutableString * ElementValue;
BOOL errorParsing;
}}

@property (nonatomic, sungani) IBOutlet DetailViewController * tsatanetsataneViewController;

- (palibe) polembaXMLFileAtURL: (NSString *) URL;

Cholinga cha parseXMLFileAtURL chidzayamba ntchitoyi. Mukadzatha, "NSWUTABLEArray" idzasunga deta yathu. Mipukutu idzapanga madikishonale omasulidwa ndi mafungulo okhudzana ndi mayina a pamunda mu fayilo la XML.

Tsopano kuti takhazikitsa zofunikira zofunika, tipitilizabe kukumana ndi ndondomeko ya .m fayilo:

- (osasamala )DidStartDocument: (NSXMLParser *) ndime {
NSLog (@ "Foni yopezeka ndi kuyambira");

}}

Ntchitoyi imayambira pachiyambi cha ndondomekoyi. Palibe chifukwa choyika chirichonse mu ntchitoyi, koma ngati mukufuna kuchita ntchito pamene fayilo ikuyamba kuchotsedwa, apa ndi pomwe mungayikemo code yanu.

- (ayi) polembaXMLFileAtURL: (NSString *) URL
{

NSString * agentString = @ "Mozilla / 5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit / 525.27.1 (KHTML, monga Gecko) Version / 3.2.1 Safari / 525.27.1";
NSMutableURLRequest * request = [NSMutableURLRequest pemphoWithURL:
[NSURL URLWithString: URL]];
[pemphani setAlenge: agentString forHTTPHeaderField: @ "Wogwiritsa ntchito"];
xmlFile = [NSURLConnection sendSynchronousRequest: pemphani kubwereraResponse: nil error: nil];


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

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

// Mwina mungafunike kutembenuza zina mwa izi malinga ndi mtundu wa fayilo ya XML yomwe mukuyang'ana
[rssParserThandizani Zomwe Muyenera Kuchita: NO];
[rssParser setShouldReportNamespacePrefixes: NO];
[rssParserChotsaniKusinthaKuyaya: Zomwe];

[rssParser parse];

}}

Ntchitoyi imalangiza injini kuti imvetsetse fayilo pa webusaiti inayake (URL) ndikuyambitsa ndondomeko yoyendetsa.

Tikuuza seva yakutali kuti ndife Safari ikuyendetsa pa Mac basi ngati seva ikuyesera kutumizira iPhone / iPad kumasewera a m'manja.

Zosankha pamapeto ndi zenizeni kwa mafayilo ena a XML. Mafayilo ambiri a RSS ndi mafayilo a XML omwe safunikira amawatsegulira.

- (osasamala) wotsutsa: (NSXMLParser *) wotsutsaErrorOtchulidwa: (NSError *) parseError {

NSString * errorString = [NSString stringWithFormat: @ "Code yolakwika% i", [parseError code]];
NSLog (@ "Error parsing XML:% @", errorString);


errorParsing = EYA;
}}

Ichi ndi njira yosavuta yofufuza zolakwika zomwe zidzasintha kanani ngati zikukumana ndi zolakwika. Mwina mungafunikire zina zenizeni apa malinga ndi zomwe mukuchita. Ngati mukufunikira kuthamanga kachidindo kamodzi mukakonza zolakwika, cholakwika cha binaryParsing chingatchulidwe panthawiyo.

- (osasintha) wotsutsa: (NSXMLParser *) parser didStartElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualiName: (NSString *) qName zizindikiro: (NSDictionary *) attributeDict {
currentElement = [elementName copy];
ElementValue = [[NSMutableString alloc] init];
ngati [elementName isEqualToString: @ "chinthu"]) {
chinthu = [[NSMutableDictionary alloc] init];

}}

}}

Nyama ya XML yowonongeka ili ndi ntchito zitatu, imodzi yomwe imatha kumayambiriro kwa chinthu chimodzi, chimathamanga mkatikati mwa kutuluka kwa chinthucho, ndipo chimathamanga kumapeto kwa chinthucho.

Kwa chitsanzo ichi, tidzakhala tikuwonetsa fayilo yofanana ndi mafayilo a RSS omwe amatsitsa zigawo m'magulu pansi pa mutu wa "zinthu" mkati mwa fayilo ya XML. Kumayambiriro kwa kukonza, tikuyang'ana kuti "chinthu" choyambira ndi kugawa dikishonale yathu yamagulu pamene gulu latsopano likupezeka. Apo ayi, timayambitsa kusintha kwathu kwa mtengo.

- (wosasamala) wotsutsa: (NSXMLParser *) wotsatila zida zotsatilaCharacters: (NSString *) chingwe {
[ElementValue appendString: string];
}}

Ichi ndi gawo lophweka. Pamene tipeze maonekedwe, timangowonjezera ku "ElementValue" yathu yosinthika.

- (osayanjanitsa): (NSXMLParser *) pulogalamu didEndElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualiName: (NSString *) qName {
ngati [elementName isEqualToString: @ "chinthu"]) {
[zolemba zowonjezerani: [kopi yachinthu]];
} china {
[item setObject: ElementValue ForKey: elementName];
}}

}}

Pamene tatsiriza kukonza chinthu, tifunika kuchita chimodzi mwa zinthu ziwiri: (1) ngati chinthu chotsirizira ndi "chinthu", tatsiriza gulu lathu, kotero tiwonjezere dikishonale yathu ku "zida zathu" ".

Kapena (2) ngati chinthucho si "chinthu", tiika mtengo mu dikishonale yathu ndi fungulo lofanana ndi dzina lake. (Izi zikutanthauza kuti sitikusowa zosiyana pa gawo lililonse mkati mwa fayilo ya XML. Tikhoza kuwagwiritsa ntchito molimbika pang'ono.)

- (osasamala )DaMaDothi: (NSXMLParser *) parser {

ngati (errorParsing == NO)
{
NSLog (@ "XML processing processing"!);
} china {
NSLog (@ "Zolakwitsa zinachitika pa XML processing");
}}

}}

Ichi ndi ntchito yomalizira yofunikira kuti tipeze nthawi. Zimangomaliza chikalatacho. Mudzaika ndondomeko iliyonse yomwe mukufuna kuti mutsirizitse ndondomekoyi pano kapena chinthu china chapadera chomwe mungafune kuchita ngati mukulakwitsa.

Chinthu chimodzi chomwe mapulogalamu angapange kuchita pano ndi kusunga deta komanso / kapena fayilo ya XML ku fayilo pa chipangizo. Mwanjira imeneyo, ngati wogwiritsa ntchito sakugwiritsidwa ntchito pa intaneti nthawi ina akanyamula pulogalamuyi, adzalandira zambiri.

Zoonadi, sitingaiwale gawo lofunika kwambiri: kuwuza kuti pulojekiti yanu iwonetsere fayilo (ndikupatsani adiresi yanu kuti muipeze)!

Poyambitsa ndondomekoyi, mumangoyenera kuwonjezera mndandanda wamakalata pamalo omwe mukufunira kupanga XML:

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