iOS -数据库网络之xml解析之远程解析XML
生活随笔
收集整理的这篇文章主要介绍了
iOS -数据库网络之xml解析之远程解析XML
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
1.IOS中XML文件获取 //设置远程访问地址 NSURL *url=[NSURL URLWithString:@""]; //创建动态URL请求,并初始化 NSMutableURLRequest * request=[[NSMutableURLRequest alloc]initWithURL:url]; //设置访问方式为POST [request setHTTPMethod:@"post"]; //设置传参参数(字符串) NSString * str=@""; //二进制的参数字符串 NSData * data=[str dataUsingEncoding:NSUTF8StringEncoding]; //放在请求里 [request setHTTPBody:data]; //发送请求 NSData * resData=[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; NSString * s=[[NSString alloc]initWithData:resData encoding:NSUTF8StringEncoding]; NSLog(@"%@",s); //通过二进制的数据创建xml转化器 NSXMLParser * parser=[[NSXMLParser alloc]initWithData:data]; //设置代理在对应.h文件中实现该代理<NSXMLParserDelegate> [parser setDelegate:self]; //启动转换 [parser parse]; 2.XML中常用的几种行为 //文档转化开始 -(void)parserDidStartDocument:(NSXMLParser)parser { } //文档转换结束 -(void)parserDidEndDocument:(NSXMLParser)parser { } //元素开始 -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *) elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *) qName attributes:(NSDictionary *) attributeDict { } //元素结束 -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *) elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *) qName { } //发现字符串 -(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *) string { } 3.XML解析 对于XML格式为多个元素解析: XML代码如下 <students> <student> <name>张三</name> <sex>男</sex> <age>21</age> </student></students> (1)创建该元素的类继承NSOject(JCStudent) JCStudent.h中 //姓名 @property (strong,nonatomic) NSString * name; //性别 @property (strong,nonatomic) NSString * sex; //年龄 @property (assign,nonatomic) int age; (2)ViewController.h中设置属性 #import "JCStudent.h" @interface ViewController : UIViewController<NSXMLParserDelegate> { NSMutableArray * students; //学生数组 BOOL isbz; //元素开始标志 NSString * parName; //字符串内容 JCStudent * student; //student类 } (3)在ViewController.m中XML的几个行为编写代码 在viewDidLoad方法中 //初始化动态数组 students=[[NSMutableArray alloc]initWithCapacity:100]; 在“文档转换开始”方法中 //清空数据 [students removeAllObjects]; //字符串内容清空 parName=@""; //标志为NO isbz=NO; 在“元素开始”方法中 if(isbz==YES){//如果标志为YES parName=elementName; //字符串内容赋值 } if([elementName isEqualToString:@"student"]){//如果元素为student isbz=YES; //标志改为YES student=[[JCStudent alloc]init]; //JCStudent初始化 } 在“发现字符串”方法中 if(isbz==YES && parName.length>0){//如果标志为YES字符串内容有值 [student setValue:string forKey:parName];//添加字符串信息到属性类中 parName=@"";//字符串内容清空 } 在“元素结束”方法中 if([elementName isEqualToString:@"student"]){//如果元素结束为student [students addObject:student];//添加类到动态数组中 isbz=NO;//标志设置为NO } 在“文档转换结束”方法中 //遍历数组 for(JCStudent * s in students){ NSLog(@"name=%@,sex=%@,age=%d",s.name,s.sex,s.age);//控制台输出 } 对于XML格式为单个元素解析(attributeDict字典): XML代码如下 <students> <student name=”张三” sex=“男” age=“21” /></students> (1)创建该元素的类继承NSOject(JCStudent) JCStudent.h中 //姓名 @property (strong,nonatomic) NSString * name; //性别 @property (strong,nonatomic) NSString * sex; //年龄 @property (assign,nonatomic) int age; (2)ViewController.h中设置属性 #import "JCStudent.h" @interface ViewController : UIViewController<NSXMLParserDelegate> { NSMutableArray * students; //学生数组 JCStudent * student; //student类 } (3)在ViewController.m中XML的几个行为编写代码 在viewDidLoad方法中 //初始化动态数组 students=[[NSMutableArray alloc]initWithCapacity:100]; 在“文档转换开始”方法中 //清空数据 [students removeAllObjects]; 在“元素开始”方法中 if([elementName isEqualToString:@"student"]){//如果开始元素为 student student= [[JCStudent alloc]init];//student类初始化 NSArray * arr=[attributeDict allKeys];//新建数组获取所有元素的key for(NSString * str in arr){//遍历数组 [student setValue:[attributeDict objectForKey:str] forKey:str];//添加数组到student类中,Value根据Key获得 } } 在“元素结束”方法中 if([elementName isEqualToString:@"student"]){//如果元素结束为student [students addObject:student];//添加类到动态数组中 } 在“文档转换结束”方法中 //遍历数组 for(JCStudent * s in students){ NSLog(@"name=%@,sex=%@,age=%d",s.name,s.sex,s.age);//控制台输出 }
转载于:https://www.cnblogs.com/jingchaoboke/p/6042236.html
总结
以上是生活随笔为你收集整理的iOS -数据库网络之xml解析之远程解析XML的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: BZOJ1082: [SCOI2005]
- 下一篇: 设计模式-单例