【iOS开发】XML解析--GData语法
GData旨在解析XML文档。 什么是 XML?
GData配置
(1)添加头文件搜索路径 Header Search Paths>/usr/include/libxml2 (2)添加二进制库 Link library -> libxml2.dylib (3)源文件添加编译选项 -fno-objc-arc (4)添加头文件 #import “GDataXMLNode.h" 语法:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view,typically from a nib.
//配置XML库(配置完才能使用) //(1)添加头文件搜索路径 // Header Search Paths-> /usr/include/libxml2 //(2)添加二进制库 // Link library -> lixml2.dylib //(3)源文件添加编译选项 // -fno-objc-arc //(4)添加头文件 // #import "GDataXMLNode.h"
//如何使用GData开源库解析XML文件 //重点: 如何读取其中的数据
//获取文件路径 NSString *file = [[NSBundle mainBundle] pathForResource:@"xml.txt" ofType:nil]; NSData *data = [[NSData alloc] initWithContentsOfFile:file];
//<1>解析XML文件 //GData中把一个XML当做一个文档Document //注意: 这一句已经完成了解析的过程 GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil]; if(doc == nil) { NSLog(@"解析失败!"); return; }
//<2>如何获取XML的数据? //实例: // 获取CityName结点的名字和其中的值 // XPath语法: 快速获取某个结点 //位置: /root/systemConfig/CityName NSArray *array = [doc nodesForXPath:@"/root/systemConfig/CityName" error:nil]; //取出其中的结点 GDataXMLElement *element = [array firstObject]; //<CityName>北京</CityName> //获取节点名 NSLog(@"name = %@",element.name); NSLog(@"value = %@",element.stringValue);
//<3>如何获取结点的属性 //实例: 拿到ComeChannel中两个Item的所有属性 array = [doc nodesForXPath:@"/root/systemConfig/ComeChannel/Item" error:nil]; NSLog(@"count = %ld",array.count); GDataXMLElement *item1 = array[0]; //获取属性 //注意: 一个结点可以有多个属性 // 一个结点所有属性存储attributes中 for(GDataXMLElement *attr in item1.attributes) { //显示属性名和属性值 NSLog(@"attr name: %@,value: %@",attr.name,attr.stringValue); }
//<4>获取所有的Item结点(不管item在哪儿) // 语法//Item表示获取所有Item结点 array = [doc nodesForXPath:@"//Item" error:nil]; NSLog(@"item count=%ld",array.count); for (GDataXMLElement *element in array) { NSLog(@"item-> %@",element.name); }
//<5>获取所有名字为value的属性(而不管这个属性在哪儿) array = [doc nodesForXPath:@"//@value" error:nil]; for (GDataXMLElement *element in array) { NSLog(@"value-> %@",element.stringValue); }
//<6>XML的遍历 //获取根结点 GDataXMLElement *root = doc.rootElement; NSLog(@"rootName: %@",root.name); //获取结点的子节点个数 long count = root.childCount; //实例: 获取root的子结点 array = root.children; //通过子节点的名字获取子结点 array = [root elementsForName:@"systemConfig"];
} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |