【iOS开发】XML解析--GData语法
2016-01-14 17:03
357 查看
GData旨在解析XML文档。
XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准
GData配置
(1)添加头文件搜索路径
Header Search Paths>/usr/include/libxml2
(2)添加二进制库
Link library -> libxml2.dylib
(3)源文件添加编译选项
-fno-objc-arc
(4)添加头文件
#import “GDataXMLNode.h"
语法:
- (void)viewDidLoad
{
[superviewDidLoad];
// 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 = [[NSBundlemainBundle]
pathForResource:@"xml.txt"ofType:nil];
NSData *data = [[NSDataalloc]
initWithContentsOfFile:file];
//<1>解析XML文件
//GData中把一个XML当做一个文档Document
//注意: 这一句已经完成了解析的过程
GDataXMLDocument *doc = [[GDataXMLDocumentalloc]
initWithData:data
options:0error: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"];
}
什么是 XML?
XML 指可扩展标记语言(EXtensible Markup Language)XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准
GData配置
(1)添加头文件搜索路径
Header Search Paths>/usr/include/libxml2
(2)添加二进制库
Link library -> libxml2.dylib
(3)源文件添加编译选项
-fno-objc-arc
(4)添加头文件
#import “GDataXMLNode.h"
语法:
- (void)viewDidLoad
{
[superviewDidLoad];
// 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 = [[NSBundlemainBundle]
pathForResource:@"xml.txt"ofType:nil];
NSData *data = [[NSDataalloc]
initWithContentsOfFile:file];
//<1>解析XML文件
//GData中把一个XML当做一个文档Document
//注意: 这一句已经完成了解析的过程
GDataXMLDocument *doc = [[GDataXMLDocumentalloc]
initWithData:data
options:0error: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"];
}
相关文章推荐
- IOS中UserDefaults的用法
- iOS -- LaunchScreen欢迎界面动画效果
- ios 获取相机权限 判断相机状态
- iOS开发-图片高斯模糊效果
- Ios中时间无法响应
- iOS代码实现常用控件之Slider 文字缩放
- iOS开发之自定义封装FrameWork需要的代码
- 我与cocoapods三五事儿,至我那终将逝去的灵魂
- iOS学习路线图
- ios 栈区,堆区
- ios Coredata 的 rollback undo 等事物处理函数
- [iOS]推送相关两点
- iOS开发Transform
- [iOS]推送相关两点
- IOS应用开发中的设备标识
- 环信iOS 简单集成3.0实时通话
- iOS开发系列--并行开发其实很容易
- iOS 字符属性NSAttributedString描述
- ios url 编码和解码
- iOS开发 -- 一键加入qq群