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);
}
XML JSON解析--基本功能的更多相关文章
- UI学习笔记---第十六天XML JSON解析
一.解析的基本概念 从事先规定好的格式中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据,数据方按照格式获取数据 常见解析方式XML解析JSON解析 二.XML:可扩展标记语言 XML ...
- REST Adapter实现SAP PI中的增强XML/JSON格式转换
SAP标准的REST adapter有着XML/JSON转换的功能,它很有用,因为一方面SAP PI/PO内部以XML格式处理数据,而另一方面,在处理REST架构风格的时候,JSON才是事实上的格式. ...
- REST Adapter实现SAP PI中的增强XML/JSON格式转换(转载)
SAP标准的REST adapter有着XML/JSON转换的功能,它很有用,因为一方面SAP PI/PO内部以XML格式处理数据,而另一方面,在处理REST架构风格的时候,JSON才是事实上的格式. ...
- iOS-数据持久化基础-JSON与XML数据解析
解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 一.X ...
- Android基础总结(12)——XML和JSON解析
XML和JSON解析 在网络上传输数据时最常用的格式有两种:XML和JSON.本文主要就是学习如何对这两种常用的数据格式进行解析. 1.XML和JSON的定义 XML:扩展标记语言 (Extensib ...
- iOS开发——网络Swift篇&JSON与XML数据解析
JSON与XML数据解析 JSON数据解析(内置NSJSONSerialization与第三方JSONKit) 一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SD ...
- 玩转iOS开发 - JSON 和 Xml 数据解析
前言 Json 和xml是网络开发中经常使用的数据格式,JSON轻量级.xml相对较复杂.所以如今用JSON的比例很大.基本上从server获取的返回数据都是JSON格式的,作为iOS开发人员,解析J ...
- 关于iOS中几种第三方对XML/JSON数据解析的使用
Json XML 大数据时代,我们需要从网络中获取海量的新鲜的各种信息,就不免要跟着两个家伙打交道,这是两种结构化的数据交换格式.一般来讲,我们会从网络获取XML或者Json格式的数据,这些数据有着特 ...
- 一起学Android之Xml与Json解析
概述 在网络中,数据交互通常是以XML和Json的格式进行,所以对这两种格式的数据进行解析,是Android开发中的必备功能,本文以一个简单的小例子,简述Android开发中Xml和Json解析的常用 ...
随机推荐
- Thread类的使用
在前面2篇文章分别讲到了线程和进程的由来.以及如何在Java中怎么创建线程和进程.今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态.上下文切换,然后接着 ...
- css背景定位
日期:2015-12-05 背景定位算是才弄明白: background-position:50% 50%; 图片水平和垂直居中.与 background-position:center center ...
- hadoop学习笔记:hadoop文件系统浅析
1.什么是分布式文件系统? 管理网络中跨多台计算机存储的文件系统称为分布式文件系统. 2.为什么需要分布式文件系统了? 原因很简单,当数据集的大小超过一台独立物理计算机的存储能力时候,就有必要对它进行 ...
- mvc+ef中比较数据
例如:根据Para表中的type和paraid 字段进行比较 public class TypeComparer : IEqualityComparer<Para> { bool IEqu ...
- thinkjs——修改where默认条件为or
写之前,得先反思一下:总以为大神同事的高冷是一种与大家格格不入的节奏,可是当自己遇到的问题难以解决的时候,大神同事一下子就让问题迎刃而解,于是,满眼的敬佩之感:一定努力当一个像大神同事一样的progr ...
- splunk 索引过程
术语: Event :Events are records of activity in log files, stored in Splunk indexes. 简单说,处理的日志或话单中中一行记录 ...
- Visual Studio 2012中的为创建类时的添加注释模板
我们往往需要给类添加注释,我们可以把注释块复制出来,放到文件中,然后在需要的时候,复制.粘贴.这样的重复劳动增加了程序员的体力劳动,而VS中给我们提供了项模版,我们只需要在其中修改一点点模版就能达到这 ...
- ubuntu14.10设置开机启动服务
1.比如lampp其他的都类似: 我是这么操作:(屌丝初学者) a.把lampp启动程序放到/etc/bin下面 b.vi /etc/rc.local ,加入lampp start(有了第一步就可以这 ...
- POJ 1573 Robot Motion 模拟 难度:0
#define ONLINE_JUDGE #include<cstdio> #include <cstring> #include <algorithm> usin ...
- Java对象的序列化和反序列化实践
2013-12-20 14:58 对象序列化的目标是将对象保存在磁盘中,或者允许在网络中直接传输对象.对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久的保存 ...