1系统解析方法 2第三方解析方法(ios9.0 不支持HTTP协议需要在info.plist加NSAppTransportSecurity 类型字典 NSAllowsArbitraryLoads类型 bool 设为YES)
1.1系统解析方法(需要先设置代理
NSXMLParserDelegate
)NSString *path = [[NSBundlemainBundle]pathForResource:@"Students"ofType:@"xml"];
NSData *data = [NSDatadataWithContentsOfFile:path];
NSXMLParser *student = [[NSXMLParseralloc]initWithData:data];
student.delegate =self;
[student parse];
#pragma NSXML代理方法
-(void)parserDidStartDocument:(NSXMLParser *)parser{
NSLog(@"开始解析");
}
-(void)parserDidEndDocument:(NSXMLParser *)parser{
NSLog(@"结束解析");
}
//一直循环调用这个三个代理方法
//解析开始标签
-(void)parser:(NSXMLParser*)parser didStartElement:(nonnullNSString *)elementName namespaceURI:(nullableNSString *)namespaceURI qualifiedName:(nullableNSString *)qName attributes:(nonnullNSDictionary<NSString *,NSString *> *)attributeDict{
NSLog(@"didStartElement ==%@",elementName);
}
//结束标签
-(void)parser:(NSXMLParser *)parser didEndElement:(nonnullNSString *)elementName namespaceURI:(nullableNSString *)namespaceURI qualifiedName:(nullableNSString *)qName{
NSLog(@"didEndElement == %@",elementName);
}
//获取标签内容
-(void)parser:(NSXMLParser *)parser foundCharacters:(nonnullNSString *)string{
NSLog(@"string == %@",string);
}
//错误信息 提示代理
-(void)parser:(NSXMLParser *)parser parseErrorOccurred:(nonnullNSError *)parseError{
NSLog(@"erro = %@",parseError.debugDescription);
}
2第三方解析方法(导入第三方类库GDataXMLNode)
//获取路径地址
NSString *path = [[NSBundle mainBundle]pathForResource:@"Students" ofType:@"xml"];
NSData *data = [NSData dataWithContentsOfFile:path];
GDataXMLDocument *document = [[GDataXMLDocument alloc]initWithData:data options:nil error:nil];
//获取根节点
GDataXMLElement *rootElement = [document rootElement];
//获取子节点
NSArray *childArray = [rootElement elementsForName:@"student"];
//创建存储结果的数组
NSMutableArray *array = [NSMutableArray array];
for (GDataXMLElement *chlidELement in childArray) {
GDataXMLElement *element = [chlidELement elementsForName:@"name"].lastObject;
NSString *name = [element stringValue];
NSLog(@"name == %@",name);
GDataXMLElement *sexelement = [chlidELement elementsForName:@"gender"].lastObject;
NSString *sex = [sexelement stringValue];
NSLog(@"sex == %@",sex);
GDataXMLElement *ageelement = [chlidELement elementsForName:@"age"].lastObject;
NSString *age = [ageelement stringValue];
NSLog(@"age == %@",age);
StudentModel *model = [[StudentModel alloc]initWirthName:name gender:sex Age:age];
[array addObject:model];
}
NSLog(@"%@",array);