XML、JSON数据解析

解析:

XML解析

XML:可扩展性标记语言   主流数据格式之一

功能:数据交换 、web服务 、内容管理 、 用作配置文件(重点)

SAX 解析-->逐行解析(采用协议回调机制)

实现协议NSXMLParserDelegate

- (void)startParse

{

//xml解析:逐行解析

//从文件列表中读取数据

//1.获得文件路径

NSString *sourcePath = [[NSBundle
mainBundle]
pathForResource:@"Student"
ofType:@".xml"];

//2.通过路径把文件转换成NSData类型

NSData *data = [NSData
dataWithContentsOfFile:sourcePath];

//创建的时候需要给parser一个字符串数据(NSData)

NSXMLParser *parser = [[NSXMLParser
alloc]
initWithData:data];

//设定代理人

parser.delegate
=
self;

//开始对文件进行解析

[parser
parse];

}

- (void)parser:(NSXMLParser
*)parser didStartElement:(NSString
*)elementName namespaceURI:(NSString
*)namespaceURI qualifiedName:(NSString
*)qName attributes:(NSDictionary
*)attributeDict

{

//当找到节点的时候,系统调用这个方法

NSLog(@"节点头");

if ([elementName
isEqualToString:@"students"]) {

//当找到students节点的时候,初始化数组

self.arr
= [NSMutableArray
array];

}else
if
([elementName
isEqualToString:@"student"]) {

//当找到student节点的时候,创建一个student对象 
添加到数组里

Student *stu = [[Student
alloc]
init];

[self.arr
addObject:stu];

[stu
release];

}

}

- (void)parser:(NSXMLParser
*)parser foundCharacters:(NSString
*)string

{

//当节点找到内容的时候,调用

NSLog(@"节点内容");

//把内容保存起来

self.tempStr
= string;

}

- (void)parser:(NSXMLParser
*)parser didEndElement:(NSString
*)elementName namespaceURI:(NSString
*)namespaceURI qualifiedName:(NSString
*)qName

{

//当找到节点结尾的时候调用

NSLog(@"节点尾");

Student *stu = [self.arr
lastObject];

if ([elementName
isEqualToString:@"number"]) {

stu.number
=
self.tempStr;

}else
if
([elementName
isEqualToString:@"name"]){

stu.name
=
self.tempStr;

}else
if
([elementName
isEqualToString:@"sex"]){

stu.sex
=
self.tempStr;

}else
if
([elementName
isEqualToString:@"phone"]){

stu.phone
=
self.tempStr;

}

}

DOM解析-->节点解析

- (void)startDOMParse

{

//按节点解析

//1.获取解析的文件信息

NSString *xmlPath = [[NSBundle
mainBundle]pathForResource:@"Student"
ofType:@".xml"];

NSData *data = [NSData
dataWithContentsOfFile:xmlPath];

//参数1:要解析的xml串 
参数2:随便 
参数3:错误信息

GDataXMLDocument *doc = [[GDataXMLDocument
alloc]
initWithData:data
options:0
error:nil];

//2.获取文件的根节点

GDataXMLElement *rootElement = [doc
rootElement];

//3.进一步搜索所有的子节点

//返回一个装满了student节点(GDataXMLElement对象)的数组

NSArray *stuArrray = [rootElement
elementsForName:@"student"];

//4.遍历数组,把student节点的每个子节点取出来

for (GDataXMLElement
*element
in stuArrray) {

Student *stu = [[Student
alloc]
init];

GDataXMLElement *nameElement = [[element
elementsForName:@"name"]
lastObject];

//从name节点中取值

NSString *value = [nameElement
stringValue];

//给学生对象的属性赋值

stu.name
= value;

GDataXMLElement *numberElement = [[element
elementsForName:@"number"]
lastObject];

value = [numberElement
stringValue];

stu.number
= value;

[self.stuDomArray
addObject:stu];

[stu
release];

}

}

JSON解析

//系统提供的json解析方法

NSString *jsonPath = [[NSBundle
mainBundle]
pathForResource:@"Student"
ofType:@"txt"];

NSData *data = [NSData
dataWithContentsOfFile:jsonPath];

NSError *error =
nil;

//参数1:文件数据 
参数2:设置解析的结果 
参数3:错误信息

NSArray *array = [NSJSONSerialization
JSONObjectWithData:data
options:NSJSONReadingMutableContainers
error:&error];

NSLog(@"%@",array);

for (NSDictionary
*dic
in array) {

Student *stu = [[Student
alloc]
init];

stu.name
= [dic
objectForKey:@"name"];

stu.sex
= [dic
objectForKey:@"sex"];

stu.phone
= [dic
objectForKey:@"phone"];

stu.number
= [dic
objectForKey:@"number"];

[self.stuArray
addObject:stu];

[stu
release];

}

第三方JSON解析包:JSONkit ,  SBJOSN

时间: 2024-10-07 15:18:29

XML、JSON数据解析的相关文章

Silverlight项目笔记7:xml/json数据解析、MVVM下实现多级树形结构TreeView、忽视引用类型导致数据绑定错误、通过流或动态空间加载图片、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题

涉及的内容主要有: 1.xml/json数据解析 2.多级树形结构TreeView 3.忽视引用类型导致数据绑定错误 4.通过流或动态空间加载图片 5.虚拟目录设置 6.silverlight安全机制引发的问题 7.webclient缓存问题 1.xml/json数据解析 (1)xml数据解析 使用WebClient获取数据,获取到的数据实例化为一个XDocument,使用XDocument的Descendants(XName)方法获得对应节点的数据集合,再通过Element这个方法对数据集合进

iOS开发笔记3:XML/JSON数据解析

这篇主要总结在iOS开发中XML/JSON数据解析过程用到的方法.XML数据解析主要使用SAX方式的NSXMLParser以及DOM方式的GDataXML,JSON数据解析主要使用NSJSONSerialization. 1.XML解析之NSXMLParser NSXMLParser是iOS原生的XML解析方式,采用SAX方式进行解析,特点是解析的时候从根元素开始,按顺序依次对每一个元素进行解析. 以下图所示XML文档为例进行解析 (1)首先是实例化一个NSXMLParser,设置代理监听解析过

iOS开发——XML/JSON数据解析

除了XML和Json,文中还涉及到的一些知识:第三方类库的使用,获取本地文件内容,网站API使用,GCD多线程编程,不做详细介绍,在代码出现的地方会注明. 先安利一波: Json XML 大数据时代,我们需要从网络中获取海量的新鲜的各种信息,就不免要跟着两个家伙打交道,这是两种结构化的数据交换格式.一般来讲,我们会从网络获取XML或者Json格式的数据,这些数据有着特定的数据结构,必须对其进行解析,得到我们可以处理的数据.所谓“解析”,就是从事先规定好的格式串中提取数据.解析的前提是数据的提供方

Json/XML/HTML数据解析

Json数据解析 https://code.google.com/p/google-gson/ 谷歌官方的jjson解析类库Gson http://www.jsonschema2pojo.org/ 该网站能将Json数据解析为POJO(简单的java对象). 1.单个对象 假设json数据如下: { "id": 100, "body": "It is my post", "number": 0.13, "create

json数据解析,并实现将网络json数据获取用listview显示

需要使用jar包 fastjson或gson这两个jar包. //Gson的使用方式 Gson gson=new Gson(); String str=ReadAssetsFile.readtext(this,"json_ss");//this当前类,"json_ss"需要解析的文件名 UserMessage userMessage=gson.fromJson(str,UserMessage.class);//需要解析的json文件最外层类名 //fastjson的

iOS之网络数据下载和Json数据解析

iOS之网络数据下载和Json数据解析 简介 在本文中笔者将要给大家介绍iOS中如何利用NSURLConnection从网络上下载数据,如何解析下载下来的JSON数据,以及如何显示数据和图片的异步下载显示 涉及到的知识点: 1.NSURLConnection异步下载封装 2.JSON格式和JSON格式解析 3.数据显示和使用SDWebImage异步显示图片 内容 1.网络下载基础知识介绍 (1)什么是网络应用? 一般情况下, iPhone的计算机, 照相机不需要从网络上下载数据也能运行, 所以这

ios json数据解析

刚刚下午那会 弄了个 解析 xml  demo的小例子,本想着json也挺复杂 弄还是 不弄,但是简单的看了下 发现挺简单,这个时候就犹豫了,要不写到博客上来 ? 考虑了很久,还是写上来吧,毕竟json用得太多了,而且算是自己的积累吧,毕竟刚开始学习IOS开发方面的知识,就当是巩固了撒! 还是 先看个效果图吧,如下! 接下来 看下工程目录吧,其实并没有必要,直接建立一个工程就行 ,算了,还是贴上来吧,如下: 工程目录中有个 Notes.json 文件,该文件就是 要解析的json数据了 ,也截下

【Qt编程】基于Qt的词典开发系列<九>--JSON数据解析

在上一篇文章<用户登录及API调用的实现>中,我通过程序实现了用户登录及API调用的实现.从而能够实现网络查词.添词的操作.可是.从上文中能够看到.调用API后返回的是JSON格式的数据,例如以下图所看到的(在QtCreator中的显示): 为了更好的观察JSON格式.我整理后显演示样例如以下: 显然.为了显示查词的结果,我们必须在上图中提取实用的信息,并正确的显示出来. 上图中每一行内容的意思我已经在文章<调用网络API>中作了解释.我在词典中选择想要显示的内容有:单词本身.单词

[转]JSon数据解析的四种方式

转至http://blog.csdn.net/enuola/article/details/7903632 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此"http://www.bejson.com/"网站来进行JSON格式化校验(点击打开链接).此网站不仅可以检测Json代码中的错误,而且可以以视图形式显示json中的数据内容,很是方便. 从IOS5开始,APPLE提供了对json的原生支持(NSJSONS

JSON数据解析(转)

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android开发中,如何在服务器端创建JSON数据,以及如何在Android客户端对JSON数据进行解析. 1.JSON数据结构 在JSON中有两种数据结构:对象和数组. 1.1对象 在JSON中,一个对象以“{”(左括号)开始,“}”(右括号)结束.每个“名称”后跟一个“:”(冒号),冒号后是该名称的值,多个