日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

XML请求数据和解析

發布時間:2024/9/30 asp.net 87 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XML请求数据和解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對JSON習以為常之后,使用XML多少有點不習慣。其實二者差不多。這里講述一下iOS自帶的NSXMLParserDelegate的使用。


1.頭文件中聲名協議<NSXMLParserDelegate>,定義兩個方法:-(void)postRequest 和 -(void)startParser:(NSData*)_data


2.源文件中實現,代碼如下:

[objc]?view plaincopyprint?
  • -(void)postRequest??
  • {??
  • ????//prepar?request??
  • ????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"];??
  • ??????
  • ????//set?headers?設置contentType和HTTPHeaderField??
  • ????NSString?*contentType?=?[NSString?stringWithFormat:@"text/xml"];??
  • ????[request?addValue:contentType?forHTTPHeaderField:?@"Content-Type"];??
  • ??????
  • ????//create?the?body?在此處拼接XML字段,將每段尖括號的內容拆開拼接起來??
  • ????NSMutableData?*postBody?=?[NSMutableData?data];??
  • ????//????[postBody?appendData:[[NSString?stringWithFormat:@"<xml>"]?dataUsingEncoding:NSUTF8StringEncoding]];??
  • ????[postBody?appendData:[[NSString?stringWithFormat:@"<?xml?version=\"1.0\"?encoding=\"utf-8\"?>"]?dataUsingEncoding:NSUTF8StringEncoding]];??
  • ????[postBody?appendData:[[NSString?stringWithFormat:@"<request?website=\"http://XXXXXXXXXXXXXX\">"]?dataUsingEncoding:NSUTF8StringEncoding]];??
  • ????[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]];??
  • ???
  • ????//post??
  • ????[request?setHTTPBody:postBody];??
  • ??????
  • ????//get?response??
  • ????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);??
  • }??
  • ??
  • //自定義一個?PraxMovie?方法,參數時NSDate型的數據,用來傳遞接受到的數據??
  • -?(void)startParser:(NSData*)data??
  • {??
  • ????//NSXMLParser解析xml格式的數據,在這里初始化,并賦值??
  • ????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;??
  • ????//region是需要解析的內容所對應的字段??
  • ????if?([currentTagName?isEqualToString:@"region"])?{?????????
  • ????//name和code是需要解析的內容所對應的字段??
  • ????????[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请求数据和解析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。