鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 操作系统维护 > 其它 > >

iOS -数据库网络之xml解析之远程解析XML

来源:互联网 作者:佚名 时间:2017-09-04 12:38
1.IOS中XML文件获取 //设置远程访问地址 NSURL *url=[NSURL URLWithString:@""]; //创建动态URL请求,并初始化 NSMutableURLRequest * request=[[NSMutableURLRequest alloc]initWithURL:url]; //设置访问方式为POST [request setHTTPMethod:@"post"]; //设置
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);//控制台输出     }

 

网友评论
<