Gdata XML解析配置和簡單使用,gdataxml解析配置
匯入libxml2,使用第三方AFNetworking網路請求,第三方XML解析GData
GData需要的配置 Build Settings 裡搜尋,添加如下
如果是ARC ,需要加上 -fno-objc-arc
首先找一個xml網址使用AFNetworking請求得到NSData資料
#define HTTP_URL_GET @"http://lab.hudong.com/ipad/zutujingxuan.xml"
- (void)getRequest { AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] init]; //返回資料解析 manager.responseSerializer = [AFHTTPResponseSerializer serializer]; //AFJSONResponseSerializer responseObject就是jeson解析後的對象(有可能是字典) //AFXMLParserResponseSerializer responseObject就是NSXMLPareser對象 //AFHTTPRequestOperationManager responseObject就是NSData [manager GET:HTTP_URL_GET parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"%@",responseObject);// NSXMLParser [self xml:responseObject]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"error:%@.",error.localizedDescription); }]; }
先開啟Firefox瀏覽器看xml的階層(複製網址在Firefox瀏覽器上開啟)
使用GData解析,記住一層一層解析
- (void)xml:(NSData *)data { //建立一個解析對象 GDataXMLDocument *document = [[GDataXMLDocument alloc]initWithData:data options:0 error:nil]; //擷取根節點 GDataXMLElement *rootElement = document.rootElement; NSLog(@"name: %@,stringvaule: %@",rootElement.name,rootElement.stringValue); GDataXMLElement *channeName = [rootElement elementsForName:@"channelName"].firstObject; NSLog(@"%@---%@",channeName.name,channeName.stringValue); //取多組 // //docInfo 直接跳過前面的子節點,知道取到名字對應的子節點 // NSArray *docInfos = [rootEiement nodesForXPath:@"//docInfo" error:nil] NSArray *docInfos = [[rootElement elementsForName:@"docList"].firstObject elementsForName:@"docInfo"]; for (GDataXMLElement *docInfoElement in docInfos) { NSMutableDictionary * dic = [NSMutableDictionary dictionary]; for (GDataXMLElement *elment in [docInfoElement children]) { [dic setObject:elment.stringValue forKey:elment.name]; } [_allInfos addObject:dic]; } NSLog(@"%@",_allInfos);}
最後是用一個全域的NSMutableArray接收列印,~