一,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);
}

最新文章

  1. 利用Java动态生成 PDF 文档
  2. Python爬虫学习(7):浙大软院网号嗅探
  3. Appium学习实践(五)遇到的坑(记录自己工作中遇到的坑以及解决方案,不定时更新)
  4. Socket为什么要翻译成套接字
  5. 扩展WPF的DataGrid按方向键移动焦点
  6. 挖一挖C#中那些我们不常用的东西之系列(1)——ToDictionary,ToLookup
  7. Linux内核分析之扒开系统调用的三层皮(上)
  8. The Skyline Problem
  9. 【niubi-job——一个分布式的任务调度框架】----FAQ文档
  10. PAT 解题报告 1048. Find Coins (25)
  11. 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文
  12. 嵌套 click 第二层 click会叠加 导致 触发 多次
  13. Win7安装IDL8.0以及破解
  14. App推广干货,排名数据分析优化效果
  15. unity3d 学习笔记(一)
  16. FormData实现文件上传实例
  17. synchronized简介
  18. Codeforces 448 D. Multiplication Table 二分
  19. go 并发编程(3)
  20. python入门(十四):面向对象(属性、方法、继承、多继承)

热门文章

  1. OID,主键生成策略,PO VO DTO,get和load区别,脏检查,快照,java对象的三种状态
  2. Xcode8 及iOS10适配问题汇总
  3. struts2配置通用action一个顶N个,你还在写一大堆action吗?
  4. R-Studio
  5. 后Hadoop时代的大数据架构(转)
  6. 多分类问题中,实现不同分类区域颜色填充的MATLAB代码(demo:Random Forest)
  7. CSS样式设置记录
  8. iOS开发错误日志
  9. MapReduce 重要组件——Recordreader组件 [转]
  10. 学习记录008-crond和visudo