【iOS开发】原生XML解析
初始化方法: - initWithContentsOfURL:
Initializes a parser with the XML content referenced by the given URL. - initWithData:
Designated Initializer
Initializes a parser with the XML contents encapsulated in a given data object. - initWithStream:
Initializes a parser with the XML contents from the specified stream and parses it.. 一个简单的xml文件解析
实例: .h #import<Foundation/Foundation.h> @interfaceMyXMLParser :NSObject<NSXMLParserDelegate> @property(nonatomic,strong)NSMutableArray* arrM; -(void)test; @end
.m
#import"MyXMLParser.h" #import"Student.h" MyXMLParser() { NSMutableString* _elementStr; Student* student; } @end @implementationMyXMLParser -(void)test { NSString* path = [[NSBundlemainBundle]pathForResource:@"test"ofType@"xml"]; NSXMLParser* parser = [[alloc]initWithContentsOfURL:[NSURLURLWithString:path]]; parser.delegate=self; [parserparse]; } #pragma mark - 解析开始 -(void)parserDidStartDocument:(NSXMLParser*)parser { _arrM= [NSMutableArrayarray]; _elementStr= [NSMutableStringstring]; } #pragma mark -解析完成 -(void)parserDidEndDocument:(NSXMLParser*)parser { NSLog(@"%@",_arrM); } #pragma mark - -(void)parser:(NSXMLParser*)parser didStartElement:(nonnullNSString*)elementName namespaceURI:(nullableNSString*)namespaceURI qualifiedName:(NSString*)qName attributes:(NSDictionary<NSString*,NSString*> *)attributeDict { if([elementNameisEqualToString:@"student"]) { student= [[Studentalloc]init]; } [_elementStrsetString@"" #pragma mark 循环查找节点内容 - (NSXMLParser*)parser foundCharacters:(NSString*)string { // 拼接字符串 [_elementStrappendString:string]; } #pragma mark 一个节点完成 - (NSXMLParser*)parser didEndElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName { NSString*result = [NSStringstringWithString:_elementStr]; @"student"]) { [_arrMaddObject:student]; }else@"name"]){ student.name= result; }@"sex"]) { sex= result; } } #pragma mark - 出错 -(NSXMLParser*)parser validationErrorOccurred:(NSError*)validationError { [removeAllObjects]; NSLog(@"%@"); description); } 其他的代理方法不一一详述 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |