1.IOS中XML文件獲取 //設置遠程訪問地址 NSURL *url=[NSURL URLWithString:@""]; //創建動態URL請求,並初始化 NSMutableURLRequest * request=[[NSMutableURLRequest alloc]initWithURL: ...
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);//控制台輸出 }