XML JSON解析--基本功能
一,json的解析
json文件:
{"code": "cn","cities":
[{"name": "保定", "lat": 38849998, "lon": 115569999},
{"name": "驻马店", "lat": 33000000, "lon": 114019996}]
}
定义一个可变数组存放每条数据
@property (nonatomic ,strong) NSMutableArray *cityList;
self.cityList = [NSMutableArray array];//首先别忘了初始化
NSString *paths=[[NSBundle mainBundle]resourcePath];//获取文件所在的文件夹路径
NSString *path=[paths stringByAppendingPathComponent:@"citys.txt"];//获取文件全路径
NSData *data=[NSData dataWithContentsOfFile:path];//读取文件到data
//将data数据转化成 json格式的数据到字典中
NSDictionary *parser=[NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
将字典存入数组: [self.cityList addObjectsFromArray:[parser objectForKey:@"cities"]];
最后读取:
NSDictionary *dic = self.cityList[indexPath.row];
NSString *name= [dic objectForKey:@"name"];
NSString *latitude=[dic objectForKey:@"lat"];
NSString *longitude=[dic objectForKey:@"lon"];
2,XML的解析,基本和json的解析一样
xml文件内容格式:
<?xml version="1.0"?>
<xml_api_reply version="1">
<cities>
<city>
<name data="保定"/>
<latitude_e6 data="38849998"/>
<longitude_e6 data="115569999"/>
</city>
<city default="true" >
<name data="北京"/>
<latitude_e6 data="39930000"/>
<longitude_e6 data="116279998"/>
</city>
</cities>
</xml_api_reply>
如json一样的步骤:
self.cityList=[[NSMutableArray alloc]init];//定义数组存放字典:name,latitude_e6,longitude_e6
NSString *paths=[[NSBundle mainBundle]resourcePath];
NSString *path=[paths stringByAppendingPathComponent:@"citys.xml"];
//从路径获取文件内容
NSData *data=[NSData dataWithContentsOfFile:path];
GDataXMLDocument *doc=[[GDataXMLDocument alloc]initWithData:data options:0 error:Nil];
//得到根节点
GDataXMLElement *root=doc.rootElement;
GDataXMLElement *secondLevalRoot=[[root elementsForName:@"cities"]lastObject];
NSArray *cities=[secondLevalRoot elementsForName:@"city"];
for (GDataXMLElement * item in cities) {
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
for (GDataXMLElement *detail in item.children) {
[dic setObject:[detail attributeForName:@"data"].stringValue forKey:detail.name];
}
[self.cityList addObject:dic];
}
最后读取:
NSDictionary *dic = self.cityList[indexPath.row];
NSString *name= [dic objectForKey:@"name"];
NSString *latitude=[dic objectForKey:@"latitude_e6"];
NSString *longitude=[dic objectForKey:@"longitude_e6"];
三,对网络数据进行读取
-(void)didClickParse:(id)sender
{
NSString *urlstring=@"http://124.205.147.26/student/class_12/team_learn/lichanghong.php";
NSURL *url=[NSURL URLWithString:urlstring];//此处网络地址可以换成超链接
NSURLRequest *request=[NSURLRequest requestWithURL:url];
NSData *data=[NSURLConnection sendSynchronousRequest:request returningResponse:Nil error:Nil];
//NSString *content=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
//NSLog(@"%@",content);
//解析
NSArray *parser=[NSJSONSerialization JSONObjectWithData:data options:0 error:Nil];
NSLog(@"%@",parser);
}
四,对字符串进行解析
首先需要引入协议NSXMLParserDelegate
-(void)didClickParser:(id)sender
{
NSLog(@"%@",[NSDate date].description);
NSString *xml=@"<root> <image>http://www,baidu.com/1.jpg</image> <image>http://www,baidu.com/2.jpg</image> <image>http://www,baidu.com/3.jpg</image> </root>";
//NSXMLParser对象进行解析xml结构的字符串
//dataUsingEncoding使用一种编码方式将字符串转换成二进制数据data对象
NSXMLParser *parser=[[NSXMLParser alloc]initWithData:[xml dataUsingEncoding:NSUTF8StringEncoding]];
//NSXMLParser的解析方式得到的返回结果是通过代理对象返回的
NSLog(@"%@",parser);
parser.delegate=self;
[parser parse];
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
NSLog(@"%@",string);
}
最新文章
- 利用Java动态生成 PDF 文档
- Python爬虫学习(7):浙大软院网号嗅探
- Appium学习实践(五)遇到的坑(记录自己工作中遇到的坑以及解决方案,不定时更新)
- Socket为什么要翻译成套接字
- 扩展WPF的DataGrid按方向键移动焦点
- 挖一挖C#中那些我们不常用的东西之系列(1)——ToDictionary,ToLookup
- Linux内核分析之扒开系统调用的三层皮(上)
- The Skyline Problem
- 【niubi-job——一个分布式的任务调度框架】----FAQ文档
- PAT 解题报告 1048. Find Coins (25)
- 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文
- 嵌套 click 第二层 click会叠加 导致 触发 多次
- Win7安装IDL8.0以及破解
- App推广干货,排名数据分析优化效果
- unity3d 学习笔记(一)
- FormData实现文件上传实例
- synchronized简介
- Codeforces 448 D. Multiplication Table 二分
- go 并发编程(3)
- python入门(十四):面向对象(属性、方法、继承、多继承)
热门文章
- OID,主键生成策略,PO VO DTO,get和load区别,脏检查,快照,java对象的三种状态
- Xcode8 及iOS10适配问题汇总
- struts2配置通用action一个顶N个,你还在写一大堆action吗?
- R-Studio
- 后Hadoop时代的大数据架构(转)
- 多分类问题中,实现不同分类区域颜色填充的MATLAB代码(demo:Random Forest)
- CSS样式设置记录
- iOS开发错误日志
- MapReduce 重要组件——Recordreader组件 [转]
- 学习记录008-crond和visudo