1.1 XML请求处理
1.1.1 xml处理机制
因为AFNetworking2.0中,对于响应返回的xml格式没有做专门的解析处理,因此需要开发者自己来做处理。在笔者的项目中,使用了一个叫AFGDataXMLRequestOperation的第三方类库来统一处理。
该库的xml解析逻辑基于GDataXML-HTML类库。不过类库处理逻辑应该还是基于AFNetworking 1.0版本,有两处需要做适配修改,不然调试不过:
1、在responseXMLDocument方法中,将responseXMLDocument的初始化方法做了调整;
2、在setCompletionBlockWithSuccess方法中,将失败Queue self.failureCallbackQueue与成功Queueself.successCallbackQueue 统一修改为self.completionQueue
AFGDataXMLRequestOperation下载地址:
https://github.com/graetzer/AFGDataXMLRequestOperation
GDataXML-HTML库下载地址:
https://github.com/graetzer/GDataXML-HTML
1.1.2 范例代码
NSURLRequest* request = [[NSURLRequestalloc]initWithURL:[[NSURLalloc]initWithString:@"http://rss.sina.com.cn/tech/index.shtml"]];
AFGDataXMLRequestOperation* xmlOpera = [AFGDataXMLRequestOperationXMLDocumentRequestOperationWithRequest:requestsuccess: ^(NSURLRequest* request,NSHTTPURLResponse* response,GDataXMLDocument* xmlDoc) {
GDataXMLElement* elem = [[[xmlDocrootElement]elementsForName:@"REC"]objectAtIndex:0];
NSLog(@"XMLDocumentFirst Node Name: %@", [elemattributeForName:@"name"]);
}failure:^(NSURLRequest*request,NSHTTPURLResponse* response,NSError* error,GDataXMLDocument* xmlDoc){
NSLog(@"requestFlagshipStoreDataError: %@", error);
}];
[xmlOperastart];