生活随笔
收集整理的這篇文章主要介紹了
XML请求数据和解析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
對JSON習以為常之后,使用XML多少有點不習慣。其實二者差不多。這里講述一下iOS自帶的NSXMLParserDelegate的使用。
1.頭文件中聲名協議<NSXMLParserDelegate>,定義兩個方法:-(void)postRequest 和 -(void)startParser:(NSData*)_data
2.源文件中實現,代碼如下:
[objc]?view plaincopyprint?
-(void)postRequest?? {?? ?????? ????NSString?*urlString?=?[NSString?stringWithFormat:@"http://122.113.26.11/golive/api/loadRegionList.do"];?? ????NSMutableURLRequest?*request?=?[[NSMutableURLRequest?alloc]?init]?;?? ????[request?setURL:[NSURL?URLWithString:urlString]];?? ????[request?setHTTPMethod:@"POST"];?? ?????? ?????? ????NSString?*contentType?=?[NSString?stringWithFormat:@"text/xml"];?? ????[request?addValue:contentType?forHTTPHeaderField:?@"Content-Type"];?? ?????? ?????? ????NSMutableData?*postBody?=?[NSMutableData?data];?? ?????? ????[postBody?appendData:[[NSString?stringWithFormat:@"<?xml?version=\"1.0\"?encoding=\"utf-8\"?>"]?dataUsingEncoding:NSUTF8StringEncoding]];?? ????[postBody?appendData:[[NSString?stringWithFormat:@"<request?website=\"http:?? ????[postBody?appendData:[[NSString?stringWithFormat:@"<device?devmodel=\"\"?dnum=\"\"?didtoken=\"\"?dver=\"\"/>"]?dataUsingEncoding:NSUTF8StringEncoding]];?? ????[postBody?appendData:[[NSString?stringWithFormat:@"<live?mac=\"XXXXX\"?deviceid=\"\"?livetoken=\"\"?livever=\"\"/>"]?dataUsingEncoding:NSUTF8StringEncoding]];?? ????[postBody?appendData:[[NSString?stringWithFormat:@"</parameter>"]?dataUsingEncoding:NSUTF8StringEncoding]];?? ????[postBody?appendData:[[NSString?stringWithFormat:@"</request>"]?dataUsingEncoding:NSUTF8StringEncoding]];?? ??? ?????? ????[request?setHTTPBody:postBody];?? ?????? ?????? ????NSHTTPURLResponse*?urlResponse?=?nil;?? ????NSError?*error?=?[[NSError?alloc]?init];?? ????self.responseData?=?[NSURLConnection?sendSynchronousRequest:request?returningResponse:&urlResponse?error:&error];?? ????NSString?*result?=?[[NSString?alloc]?initWithData:responseData?encoding:NSUTF8StringEncoding];?? ????NSLog(@"regionResponse?Code:?%ld",?(long)[urlResponse?statusCode]);?? ?? ????if?([urlResponse?statusCode]?>=?200?&&?[urlResponse?statusCode]?<?300)?{?? ????????NSLog(@"regionResponse:?%@",?result);?? ?????????? ?????????? ?????????? ????}?? ?????? ????NSString*?aStr;?? ????aStr?=?[[NSString?alloc]?initWithData:postBody?encoding:NSASCIIStringEncoding];?? ????NSLog(@"reg==========%@",aStr);?? }?? ?? ?? -?(void)startParser:(NSData*)data?? {?? ?????? ????NSXMLParser*?parser?=?[[NSXMLParser?alloc]initWithData:data];?? ????parser.delegate?=?self;?? ????[parser?parse];?? ????NSLog(@"解析完成。。。");?? }?? ?? ?? -?(void)parser:(NSXMLParser?*)parser?parseErrorOccurred:(NSError?*)parseError?? {?? ????NSLog(@"%@",parseError);?? }?? ?? ?? -?(void)parser:(NSXMLParser?*)parser?didStartElement:(NSString?*)elementName?? ??namespaceURI:(NSString?*)namespaceURI?? ?qualifiedName:(NSString?*)qualifiedName?? ????attributes:(NSDictionary?*)attributeDict?? {?? ????self.currentTagName?=?elementName;?? ?????? ????if?([currentTagName?isEqualToString:@"region"])?{????????? ?????? ????????[self.name?addObject:[attributeDict?objectForKey:@"name"]];?? ????????[self.code?addObject:[attributeDict?objectForKey:@"code"]];?? ????????[self.regionDic?setObject:[attributeDict?objectForKey:@"code"]?forKey:[attributeDict?objectForKey:@"name"]];?? ?????????? ????????NSLog(@"language:%@;code:%@",[attributeDict?objectForKey:@"name"],[attributeDict?objectForKey:@"code"]);?? ????}?? ?????? }?? ?? ?? -?(void)parser:(NSXMLParser?*)parser?didEndElement:(NSString?*)elementName?? ??namespaceURI:(NSString?*)namespaceURI?? ?qualifiedName:(NSString?*)qName;?? {?? ????self.currentTagName?=?nil;?? }??
這樣就OK了,成功獲取到后臺數據并解析成所需要的內容。
總結
以上是生活随笔為你收集整理的XML请求数据和解析的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。