Xcode дахь XML файлуудыг яаж задлах

Олон програмд ​​тулгуурласан нэг энгийн ажил бол XML файлуудыг задлах чадвар юм. Аз болоход Xcode нь Objective-C дэх XML файлыг задлахад харьцангуй хялбар болгодог.

XML файл нь вэбсайтынхаа RSS feed-тэй холбоотой таны үндсэн мэдээллээс юу ч агуулсан байж болно. Тэдгээр нь алсаас апп доторх мэдээллийг шинэчлэх гайхалтай арга юм. Ингэснээр жагсаалтад шинэ зүйл оруулахад шинэ хоёртын файлыг оруулах шаардлагагүй болно.

Xcode дээр XML файлыг хэрхэн яаж боловсруулах вэ? Процесс нь хувьсагчдыг ашиглах алхмуудыг агуулдаг бөгөөд XML процессыг эхлүүлэх процессыг эхлүүлэх, процесс формыг хооллох, элементийн эхлэл, элементийн доторх тэмдэгт (утга) бие даасан элементийн төгсгөл, мөн процессийн төгсгөлийн үйл явцын төгсгөл.

Энэ жишээн дээр бид интернетийн файлыг тодорхой вэб хаяг ( URL ) илгээж задлах болно.

Бид толгой файлыг үүсгэж эхэлнэ. Энэ бол манай Файлыг шалгахад тавигдах хамгийн доод шаардлагуудтай Нарийвчилсан харах Controller-н үндсэн толгой файл юм.

@interface RootViewController: UITableViewController {
DetailViewController * detailViewController;

NSXMLParser * rssParser;
NSMutableArray * зүйлүүд;
NSMutableDictionary * зүйл;
NSString * currentElement;
NSMutableString * ElementValue;
BOOL errorParsing;
}

@property (nonatomic, retain) IBOutlet DetailViewController * detailViewController;

- (хүчингүй) parseXMLFileAtURL: (NSString *) URL;

ParseXMLFileAtURL функц нь бидний хувьд үйл явцыг эхлүүлэх болно. Үүнийг дуусах үед NSMutableArray "өгүүлэл" нь бидний өгөгдлийг хадгална. Массив нь XML файлын талбарын нэртэй холбоотой товчлууруудтай хэлбэлзэлтэй толь бичигуудаас бүрдэх болно.

Одоо бид шаардлагатай хувьсагчийг тохируулсан, бид .m файлд процесстой танилцах болно.

- (хүчингүй) parserDidStartDocument: (NSXMLParser *) parser {
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, Gecko шиг хувилбар) / 3.2.1 Safari / 525.27.1";
NSMutableURLRequest * хүсэлт = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString: URL]];
[хүсэлт setValue: agentString forHTTPHeaderField: @ "User-Agent"];
xmlFile = [NSURLConnection sendSynchronousRequest: хүсэлт буцахResponse: nil error: nil];


нийтлэлүүд = [[NSMutableArray хуваарилалт] init];
errorParsing = NO;

rssParser = [[NSXMLParser хуваарилалт] initWithData: xmlFile];
[rssParser setDelegate: өөрөө];

// Та эдгээрийн заримыг таны анализ хийх XML файлын төрлөөс хамааран эргүүлэх хэрэгтэй байж магадгүй юм
[rssParser setShouldProcessNamespaces: NO];
[rssParser setShouldReportNamespacePrefixes: NO];
[rssParser setShouldResolveExternalEntities: NO];

[rssParser задлах];

}

Энэ функц нь хөдөлгүүрийг тодорхой вэб хаяг (URL) дээр татаж авахыг зааварчилдаг бөгөөд үүнийг задлах үйл явцыг эхлүүлнэ.

Бид серверийг гар утсанд iPhone / iPad- ыг дахин чиглүүлэхийг оролдож байгаа бол бид Safari дээр ажиллаж байгаа Safari гэж хэлдэг.

Эцэст нь байгаа сонголтууд нь тодорхой XML файлуудтай байдаг. Ихэнх RSS файлууд болон ерөнхий XML файлууд тэдгээрийг асаах шаардлагагүй болно.

- (хүчингүй) parser: (NSXMLParser *) parser parseErrorOccurred: (NSError *) parseError {

NSString * errorString = [NSString stringWithFormat: @ "Error code% i", [parseError code]];
NSLog ("XML алдаа:% @", errorString);


errorParsing = YES;
}

Энэ нь алдаатай тулгарсан тохиолдолд хоёртын утга тохируулах энгийн алдааг шалгах чиглүүлэлт юм. Та юу хийж байгаагаасаа илүү тодорхой зүйл хэрэгтэй байж магадгүй. Хэрэв та зүгээр л алдаа гарсан тохиолдолд зарим кодыг ажиллуулах шаардлагатай бол errorParsing хоёртын хувьсагчийг тэр үед дуудаж болно.

(NSString *) элементНэрийн нэрсийн санURI: (NSString *) нэрний жагсаалтURI qualifiedName: (NSString *) q Нэрийн шинж чанарууд: (NSDictionary *) attributeDict {
currentElement = [elementName copy];
ElementValue = [[NSMutableString хуваарилалт] init];
if ([elementName isEqualToString: @ "item"]) {
item = [[NSMutableDictionary alloc]] init;

}

}

XML parser-ийн мах нь гурван функц, элементийн эхлэлийн үед ажиллуулдаг нэг элемент, элементийн төгсгөлд ажиллуулж буй элементүүдийн дунд ажилладаг.

Энэ жишээний хувьд XML файлтай төстэй файлуудыг XML файлын "элемент" гарчгийн доор бүлгүүдэд хуваах болно. Боловсруулалтын эхэн үед бид шинэ бүлэг илэрсэн үед элементийн нэр "зүйл" -ийг шалгаж, манай толь бичигт хуваарилж байна. Үгүй бол бид хувьсах хэмжигдэхүүнээ эхлүүлнэ.

- (хүчингүй) parser: (NSXMLParser *) parser foundCharacters: (NSString *) string {
[ElementValue appendString: string];
}

Энэ бол хялбар хэсэг юм. Тэмдэгтүүдийг олоход бид "ElementValue" хувьсагч дээрээ нэмнэ үү.

(NSString *) элементНэрийн нэрний санURI: (NSString *) нэрний утгаЭнд: NAME (NSString *) qName {
if ([elementName isEqualToString: @ "item"]) {
[нийтлэл addObject: [зүйл хуулбарлах]];
} else {
[item setObject: ElementValue forKey: elementName];
}

}

Элементийг боловсруулж дууссаны дараа бид хоёр зүйлийг хийх хэрэгтэй. Үүнд: (1) хэрэв төгсгөлийн элемент нь "зүйл" бол бид группээ дуусгасан тул бид толь бичгээ "нийтлэл" ".

Эсвэл (2) хэрэв элемент нь "зүйл" биш бол бид толь бичгийн утгыг элементийн нэртэй тохирох түлхүүрээр тохируулна. (Энэ нь XML файлын доторх талбар бүрийн хувьсагчийн хувьсагч хэрэггүй бөгөөд бид тэдгээрийг арай илүү динамикаар боловсруулах боломжтой).

- (хүчин төгөлдөр бус) parserDidEndDocument: (NSXMLParser *) parser {

if (errorParsing == NO)
{
NSLog (@ "XML боловсруулалт хийгдсэн!");
} else {
NSLog ("" XML боловсруулах явцад гарсан алдаа ");
}

}

Энэ нь бидний нийтлэг үйл явцын хувьд хамгийн сүүлийн функц юм. Энэ нь баримтыг дуусгавар болгоно. Та энд үйл явцыг дуусгахыг хүссэн ямар ч кодыг эсвэл ямар нэг алдаа гарсан тохиолдолд хийхийг хүсч байгаа тусгайлсан зүйлийг оруулна.

Энд олон програм аппликешн нь төхөөрөмж дээрх файл руу өгөгдөл болон XML файлыг хадгалах явдал юм. Ингэснээр, хэрэв хэрэглэгч интернетэд холбогдоогүй бол дараагийн удаа тэд апп-ийг ачаалах бөгөөд энэ мэдээллийг авах боломжтой.

Мэдээжийн хэрэг, бид файлаа задлан шинжилж (түүнийг олж авахын тулд вэб хаяг өгөх!) Хамгийн чухал хэсгийг мартаж болохгүй.

Процессийг эхлүүлэхийн тулд та XML кодыг хийхийг хүссэн зохих газартаа энэ мөрийн кодыг нэмэх хэрэгтэй:

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