//使用GDdata去做xml解析;
//1.导入第三方库GData;
//Gdata是基于系统的libzml2库去实现xml的解析;libxml2
//默认没有被导入工程中,需要手动导入
//具体步骤参见上一条博客
#import <Foundation/Foundation.h>
#import "GDataXMLNode.h"
#define path @"http://yuting.local/shareX/xml2.xml"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//1.拿到需要解析的数据
NSURL *url = [NSURL URLWithString:path];
NSData *data = [NSData dataWithContentsOfURL:url];
// NSString * str = [[NSString alloc]initWithData:data
// encoding:NSUTF8StringEncoding];
// NSLog(@"%@",str);
//2.开始解析数据
//a.将xml数据转换成树;
GDataXMLDocument * document = [[GDataXMLDocument alloc]
initWithData:data options:0 error:nil];
//b.获取根节点;
GDataXMLElement *rootElement = [document rootElement];
//===================使用xpath快速获取节点(前提:先获取根节点)=================
GDataXMLElement *element = [rootElement
nodesForXPath:@"books/book[1]/name" error:nil][0];
NSString *name2 = element.stringValue;
NSLog(@"===%@===",name2);
//===================逐个遍历节点知道获取需要的节点===========
//c.根据节点名字获取子节点,返回值为数组,因为一个节点下可能有多个子节点
//c.获取books节点
GDataXMLElement *booksElement = [rootElement
elementsForName:@"books"][0];
//d.获取第一个book节点;
GDataXMLElement *bookElement = [booksElement
elementsForName:@"book"][0];
//e.获取名字节点;
GDataXMLElement *nameElement = [bookElement
elementsForName:@"name"][0];
//f.获取name节点中的内容:
NSString *name = nameElement.stringValue;
NSLog(@"%@",name);
//获取所有的book节点;
//数组中的数组元素全是节点;
NSArray *bookArray = [booksElement elementsForName:@"book"];
for (GDataXMLElement *tBookElement in bookArray) {
//获取book节点的属性
NSString * ID = [tBookElement
attributeForName:@"id"].stringValue;
NSString *language = [tBookElement
attributeForName:@"language"].stringValue;
NSLog(@"id:%@ lg:%@",ID,language);
}
}
return 0;
}