OC---xml解析实例
//使用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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |