xml要加第三方库GDataXMLDocument
2016-06-04 21:59
239 查看
// 十分有味xml解析
#import <Foundation/Foundation.h>
#import "GDataXMLNode.h"
int main(int argc, const char * argv[]) {
@autoreleasepool
{
/*
json和xml:
1.json数据量比较少。
2.json传输的速度比较快。
*/
NSString *path = @"/Users/qianfeng/Documents/oc课件/day13-3/十分有味xml解析/十分有味xml解析/十分有味.xml";
//读取文件内容
NSData *data = [NSData dataWithContentsOfFile:path];
//xml解析器
GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];
/*
NSArray *list2Array = [document nodesForXPath:@"/root/category/list/list" error:nil];
//遍历第2层list
for (GDataXMLElement *list3 in list2Array)
{
NSArray *list3Array = [list3 elementsForName:@"list"];
//遍历第3层list
for (GDataXMLElement *e in list3Array)
{
GDataXMLNode *node = [e attributeForName:@"dname"];
NSLog(@"%@",[node stringValue]);
}
}
*/
#if 1
//第3层list
NSArray *array = [document nodesForXPath:@"/root/category/list/list/list" error:nil];
for (GDataXMLElement *e in array)
{
//取属性节点
GDataXMLNode *node = [e attributeForName:@"dname"];
//取属性值
NSLog(@"%@",[node stringValue]);
}
#endif
}
return 0;
}
/*<?xml version="1.0" encoding="UTF-8"?>
<root appname="FavoriteSnack" cnname="食分有味">
<category>
<list dname="特色美食">
<list dname="休闲零食">
<list dname="休闲零食" searchname="休闲零食"/>
<list dname="巧克力" searchname="巧克力"/>
<list dname="马卡龙" searchname="马卡龙"/>
<list dname="肉松饼" searchname="肉松饼"/>
<list dname="曲奇" searchname="曲奇"/>
<list dname="布丁" searchname="布丁"/>
<list dname="核桃" searchname="核桃"/>
<list dname="夏威夷果" searchname="夏威夷果"/>
<list dname="腰果" searchname="腰果"/>
<list dname="牛肉干" searchname="牛肉干"/>
<list dname="猪肉脯" searchname="猪肉脯"/>
<list dname="鸭脖" searchname="鸭脖"/>
<list dname="糖果" searchname="糖果"/>
<list dname="稻香村" searchname="稻香村"/>
<list dname="费列罗" searchname="费列罗"/>
<list dname="好想你" searchname="好想你"/>
<list dname="周黑鸭" searchname="周黑鸭"/>
<list dname="德芙" searchname="德芙"/>
</list>
<list dname="营养保健">
<list dname="营养保健" searchname="营养保健"/>
<list dname="维生素" searchname="维生素"/>
<list dname="胶原蛋白" searchname="胶原蛋白"/>
*/
#import <Foundation/Foundation.h>
#import "GDataXMLNode.h"
int main(int argc, const char * argv[]) {
@autoreleasepool
{
/*
json和xml:
1.json数据量比较少。
2.json传输的速度比较快。
*/
NSString *path = @"/Users/qianfeng/Documents/oc课件/day13-3/十分有味xml解析/十分有味xml解析/十分有味.xml";
//读取文件内容
NSData *data = [NSData dataWithContentsOfFile:path];
//xml解析器
GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];
/*
NSArray *list2Array = [document nodesForXPath:@"/root/category/list/list" error:nil];
//遍历第2层list
for (GDataXMLElement *list3 in list2Array)
{
NSArray *list3Array = [list3 elementsForName:@"list"];
//遍历第3层list
for (GDataXMLElement *e in list3Array)
{
GDataXMLNode *node = [e attributeForName:@"dname"];
NSLog(@"%@",[node stringValue]);
}
}
*/
#if 1
//第3层list
NSArray *array = [document nodesForXPath:@"/root/category/list/list/list" error:nil];
for (GDataXMLElement *e in array)
{
//取属性节点
GDataXMLNode *node = [e attributeForName:@"dname"];
//取属性值
NSLog(@"%@",[node stringValue]);
}
#endif
}
return 0;
}
/*<?xml version="1.0" encoding="UTF-8"?>
<root appname="FavoriteSnack" cnname="食分有味">
<category>
<list dname="特色美食">
<list dname="休闲零食">
<list dname="休闲零食" searchname="休闲零食"/>
<list dname="巧克力" searchname="巧克力"/>
<list dname="马卡龙" searchname="马卡龙"/>
<list dname="肉松饼" searchname="肉松饼"/>
<list dname="曲奇" searchname="曲奇"/>
<list dname="布丁" searchname="布丁"/>
<list dname="核桃" searchname="核桃"/>
<list dname="夏威夷果" searchname="夏威夷果"/>
<list dname="腰果" searchname="腰果"/>
<list dname="牛肉干" searchname="牛肉干"/>
<list dname="猪肉脯" searchname="猪肉脯"/>
<list dname="鸭脖" searchname="鸭脖"/>
<list dname="糖果" searchname="糖果"/>
<list dname="稻香村" searchname="稻香村"/>
<list dname="费列罗" searchname="费列罗"/>
<list dname="好想你" searchname="好想你"/>
<list dname="周黑鸭" searchname="周黑鸭"/>
<list dname="德芙" searchname="德芙"/>
</list>
<list dname="营养保健">
<list dname="营养保健" searchname="营养保健"/>
<list dname="维生素" searchname="维生素"/>
<list dname="胶原蛋白" searchname="胶原蛋白"/>
*/
相关文章推荐
- jQuery EasyUI时间戳自定义时间显示格式类型
- 《机器学习(周志华)》 习题9.4参考答案
- 刷题第七天:南邮NOJ【1015求最大公约数和最小公倍数】
- c++第六次作业
- Substring with Concatenation of All Words, 返回字符串中包含字符串数组所有字符串元素连接而成的字串的位置
- 【转载】ID3DXSPRITE接口简单使用
- 回到主线程三种常用方法
- addObserver
- c++第六次循环
- div 水平居中的一种方法
- bool operator==(const Array&)const; 这最后一个const 是做什么用的
- unity android设备上查看log输出
- collectionView(xib)
- 面试题1:类的赋值运算符函数
- 设计模式学习(4)
- 学习笔记之一:学习中好的试题
- Lowest Common Ancestor of a Binary Search Tree
- 游戏编程中的人工智能-遗传算法入门(五)
- Android Studio1.5使用和学习记录
- html列表相关属性