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]
- 下一篇: 拼音显示数字之和