日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

在AFN中使用NSXMLParser解析服务器返回的XML数据

發(fā)布時(shí)間:2025/3/21 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在AFN中使用NSXMLParser解析服务器返回的XML数据 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

服務(wù)器返回的XML格式:

因?yàn)樘O(píng)果沒(méi)有提供直接獲取xml開(kāi)始標(biāo)簽和結(jié)束標(biāo)簽中間的字符串,雖然提供了

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string這個(gè)方法獲取中間的字符串,但是這個(gè)字符串包含了空格和回車(chē),所以要在這個(gè)方法中進(jìn)行過(guò)濾。

源代碼如下:

8 9 #import "RecommendController.h" 11 #import "SPHTTPRequestTool.h" 13 #import "UIImageView+WebCache.h" 14 @interface RecommendController ()<NSXMLParserDelegate> 15 16 @property (nonatomic, strong)NSMutableArray *items; 17 18 @property (nonatomic, strong)NSMutableDictionary *itemDict; 19 20 @property (nonatomic, strong)NSMutableArray *itemArray; 21 22 @property (nonatomic, copy)NSString *itemName; // 記錄標(biāo)簽名 23 24 @end 25 26 @implementation RecommendController 37 - (void)viewDidLoad 38 { 39 [super viewDidLoad]; 46 [self loadNewRecommend]; 47 self.tableView.delegate = self; 48 self.tableView.dataSource = self; 49 } 50 51 - (void)loadNewRecommend 52 { 53 54 NSDictionary *dict = [NSDictionary dictionary]; 55 [SPHTTPRequestTool GET:@"http://jackgo.cn/jackgo/lab/v1.3/getitems.php?refresh=1&&earliest=(null)" params:dict success:^(NSXMLParser *parser) { 56 // 2.設(shè)置代理 57 parser.delegate = self; 58 59 // 3.開(kāi)始解析 60 [parser parse]; // 卡住(解析完畢才會(huì)返回) 61 62 [self.tableView reloadData]; 63 } failure:^(NSError *error) { 64 SPLog(@"%@",error); 65 }]; 66 67 } 68 69 - (void)parserDidStartDocument:(NSXMLParser *)parser 70 { 71 SPLog(@"parser = %@", parser); 72 } 73 74 75 /** 76 * 解析到一個(gè)元素的開(kāi)頭時(shí)調(diào)用 <items> 77 */ 78 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 79 { 80 81 if ([@"items" isEqualToString:elementName]) { // 解析到一個(gè)items標(biāo)簽 82 self.items = [NSMutableArray array]; 83 } else if ([@"item" isEqualToString:elementName]) { // 解析到一個(gè)item標(biāo)簽, 創(chuàng)建一個(gè)模型 93 self.itemArray = [NSMutableArray array]; 94 self.itemDict = [NSMutableDictionary dictionary]; 95 }else 96 self.itemName = elementName; 97 } 98 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 99 { 100 if([string isEqualToString:@"\n"] || [string isEqualToString:@" "] || [string isEqualToString:@"\n\n"]) return; 105 self.itemDict[self.itemName] = string; 107 }

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {if (self.itemDict != nil && self.itemArray != nil && [self.secondElement isEqualToString:elementName]) {[self.itemArray addObject:self.itemDict];[self.items addObject:self.itemArray];SPLog(@"%@", self.itemDict);}} 123 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 124 { 125 #warning Potentially incomplete method implementation. 126 127 return 1; 128 } 129 130 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 131 {135 return self.items.count; 136 } 137 138 139 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 140 { 142 UITableViewCell *cell = [[UITableViewCell alloc] init]; 147 NSArray *array = self.items[indexPath.row]; 148 NSDictionary *dict = [array lastObject]; 149 cell.textLabel.text = dict[@"intro"]; 150 cell.textLabel.numberOfLines = 0; 151 [cell.imageView setImageWithURL:dict[@"picurl"] placeholderImage:[UIImage imageNamed:@"error"]]; 152 / 153 return cell; 154 } 155 156 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 157 { 158 return 70; 159 } 210 211 @end

?如果報(bào)錯(cuò):可能原因

使用AFN解析時(shí),

AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] init];

?manager.responseSerializer = [AFXMLParserResponseSerializer serializer]; // 返回XML時(shí),這句話(huà)不寫(xiě),會(huì)報(bào)錯(cuò)。

?

轉(zhuǎn)載于:https://www.cnblogs.com/Fc-ios/p/3889569.html

總結(jié)

以上是生活随笔為你收集整理的在AFN中使用NSXMLParser解析服务器返回的XML数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。