я сделал пользовательский класс NSObject, который я использую для разбора страницы XML, там:как разобрать XML-файл, который я добавить в мой проект
#import "requestManager.h"
@implementation requestManager
-(id)initWithDelegate:(id<requestDelegate>)delegateObj{
self = [super init];
if (self){
self.delegate = delegateObj;
self.contentData = [NSMutableData data];
self.listOfPlaces = [NSMutableArray array];
}
return self;
}
-(void)loadXmlData{
NSURL *urlStr = [NSURL URLWithString:@"http://www.w3schools.com/xml/simple.xml"];
NSURLRequest *req = [NSURLRequest requestWithURL:urlStr];
NSURLConnection *conn = [NSURLConnection connectionWithRequest:req delegate:self];
[conn start];
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[self.contentData appendData:data];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
NSXMLParser *parserObj =[[NSXMLParser alloc] initWithData:self.contentData];
parserObj.delegate = self;
[parserObj parse];
NSLog(@"FINISHLOADING");
[self.delegate didFinishParsingToDatabase:self.listOfPlaces];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
NSLog(@"error!");
}
-(void)parser:(NSXMLParser*)parser foundCharacters:(NSString *)string{
if (isName) [self.currentPosition setValue:string forKey:@"name"];
if (isDescription) [self.currentPosition setValue:string forKey:@"description"];
if (isLatitude) [self.currentPosition setValue:string forKey:@"latitude"];
if (isLongitude) [self.currentPosition setValue:string forKey:@"longitude"];;
if (isWebPage) [self.currentPosition setValue:string forKey:@"webPage"];
if (isImageCell) [self.currentPosition setValue:string forKey:@"imageCell"];
if (isImageFirst) [self.currentPosition setValue:string forKey:@"imageFirst"];
if (isImageSecond) [self.currentPosition setValue:string forKey:@"imageSecond"];
if (isImageThird) [self.currentPosition setValue:string forKey:@"imageThird"];
if (isImageFourth) [self.currentPosition setValue:string forKey:@"imageFourth"];
}
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
if ([elementName isEqualToString:@"place"]){
self.currentPosition = [NSMutableDictionary dictionary];
}
if ([elementName isEqualToString:@"name"]) isName = YES;
if ([elementName isEqualToString:@"description"]) isDescription = YES;
if ([elementName isEqualToString:@"latitude"]) isLatitude = YES;
if ([elementName isEqualToString:@"longitude"]) isLongitude = YES;
if ([elementName isEqualToString:@"imageCell"]) isImageCell = YES;
if ([elementName isEqualToString:@"imageSecond"]) isImageSecond = YES;
if ([elementName isEqualToString:@"imageThird"]) isImageThird = YES;
if ([elementName isEqualToString:@"imageFourth"]) isImageFourth = YES;
if ([elementName isEqualToString:@"webpage"]) isWebPage = YES;
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"name"]) isName = NO;
if ([elementName isEqualToString:@"description"]) isDescription = NO;
if ([elementName isEqualToString:@"latitude"]) isLatitude = NO;
if ([elementName isEqualToString:@"longitude"]) isLongitude = NO;
if ([elementName isEqualToString:@"imageCell"]) isImageCell = NO;
if ([elementName isEqualToString:@"imageSecond"]) isImageSecond = NO;
if ([elementName isEqualToString:@"imageThird"]) isImageThird = NO;
if ([elementName isEqualToString:@"imageFourth"]) isImageFourth = NO;
if ([elementName isEqualToString:@"webpage"]) isWebPage = NO;
if ([elementName isEqualToString:@"place"]){
// self.currentPosition = [NSMutableDictionary dictionary];
// NSLog(@"%@", self.currentPosition);
[self.listOfPlaces addObject:self.currentPosition];
NSLog(@"%@", self.listOfPlaces);
}
}
//-(void)parserDidEndDocument:(NSXMLParser *)parser{
//
//
//}
@end
Что я хочу, чтобы добавить файл XML в мой проект и разобрать его в автономном режиме. Как мне это реализовать? Должен ли я написать для него другой класс или изменить существующий?
Любой совет будет оценен, спасибо.