iOS GET、POST数据解析

在实际开发中,JSON数据解析更简单易行,一般均使用json数据解析,因此,程序猿们请务必和后台搞好关系,让他给你json数据。

   XML解析:

ios SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选:TBXML、TouchXML、KissXML、TinyXML和GDataXML。

解析XML通常有两种方式:DOM和SAX

DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),遍历树结构可以检索任意XML节点,读取它的属性和值。

SAX解析XML时,是基于事件通知的模式,一边读取XML文档一边处理,不必等整个文档加载完之后才采取操作,当在读取解析过程中遇到需要处理的对象,会发出通知对其进行处理。

NSXMLParser:

举个栗子:

<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"> 头标签,里面的xmlns,可以看成是属性
<channel>
<title>呵呵呵呵</title>

-(BOOL)parser:(NSString*)string
{
    //系统自带的
        NSXMLParser *par = [[[NSXMLParser alloc] initWithData:[string dataUsingEncoding:NSUTF8StringEncoding]]autorelease];
        [par setDelegate:self];//设置NSXMLParser对象的解析方法代理
        return [par parse];//调用代理解析NSXMLParser对象,看解析是否成功   }

}

#pragma mark xmlparser
//step 1 :准备解析
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
//    NSLog(@"%@",NSStringFromSelector(_cmd) );

}
//step 2:准备解析节点
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
//    NSLog(@"%@",NSStringFromSelector(_cmd) );
}
//step 3:获取首尾节点间内容
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    NSLog(@"%@",NSStringFromSelector(_cmd) );
}

//step 4 :解析完当前节点
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
   NSLog(@"%@",NSStringFromSelector(_cmd) );
}

//step 5;解析结束
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
//    NSLog(@"%@",NSStringFromSelector(_cmd) );
}
//获取cdata块数据
- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
{
//    NSLog(@"%@",NSStringFromSelector(_cmd) );
}

这里解释下GDataXML:

GDaraXML:这时一套Google开发得DOM方式解析XML类库,支持读取和修改XML文档,支持XPath方式查询。

安装说明:

1. 从http://code.google.com/p/gdata-objectivec-client/downloads/list下载“gdata-objective-c client library.”

2. 解压缩文件,找到Source\XMLSupport,并且将其中的GDataXMLNode.h 和 GDataXMLNode.m文件拖到项目中

3. 选中项目,选中“Build Settings”标签页

4. 将Build Settings页中,顶部的“Basic”标签切换到“All”

5. 找到“Paths\Header Search Paths”项,并添加“/usr/include/libxml2”到列表中

6. 找到“Linking\Other Linker Flags”项,并添加“-lxml2”到列表中,

在需要调用GDataXML的代码文件头部,加入:

#import “GDataXMLNode.h”

解析DOM文档对象示例:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"xml"];

NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:filePath];

NSError *error;

GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:&error];

if (doc == nil) { return nil; }

NSLog(@"%@", doc.rootElement);

[doc release];

[xmlData release];

JSON解析:

  NSString * urlStr = [NSString stringWithFormat:@"http://121.40.54.251:80/HandheldKitchen/api/more/hotwater!getHotwaterList.do?id=%lu&page=1&pageRecord=12&is_traditional=0",(long)_iid];
    NSURL * url = [NSURL URLWithString:urlStr];
    NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];
    request.HTTPMethod = @"GET";
    [self.detailsSourceArray removeAllObjects];
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
    if (data) {
     NSMutableDictionary * dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
      NSMutableArray * array = [dic valueForKey:@"data"];
  for (NSMutableDictionary * dic in array) {
                 _right = [[RightModel alloc]init];
                 [_right setValuesForKeysWithDictionary:dic];                                                                                                                          [self.detailsSourceArray addObject:_right];
     [_right release];
   }
       }];

  

  

时间: 2024-11-10 16:21:59

iOS GET、POST数据解析的相关文章

【iOS】Plist-XML-JSON数据解析

网络上传输数据通用的有XML,JSON等,iOS中也可以用Plist. 要进行数据传输,就要首先进行序列化: 1.序列化. 对象转换成二进制流.(这个一句话就行) 2.反序列化. 二进制流转换为对象等. (关键要弄清楚这个) JSON:(和XML一样都是用来传数据的) 轻量级的数据交换格式,正在逐步取代XML. XML: 结构性的标记语言,易读.但数据量大. Plist偶尔用着玩玩: Mac.iOS中用的多一种格式. 一.应用场景 1.XML的应用场景: XMPP--即时通讯,KissXML R

iOS中的数据解析(XML,JSON),SAX解析,DOM解析

第三方 SAT解析 #import "SAXTableViewController.h" #import "Student.h" @interface SAXTableViewController ()<NSXMLParserDelegate> @property (nonatomic, retain) NSMutableArray *dataSourse; // 存储学生对象 @property (nonatomic, retain) Student

iOS学习之数据解析

解析:按照约定好的格式提取数据的过程叫做解析; 后台开发人员按照约定好的格式存入数据,前端开发人员按照约定的格式读取数据; 主流的格式: XML / JSON 前端和后台都能识别的格式; XML解析 XML解析的两种工作原理: 1.SAX解析:基于事件回调的解析机制,逐行进行解析,效率低,适合于大数据解析.  系统提供的NSXMLParser. 2.DOM解析:把解析数据读入内存,初始化生成树形结构,逐层进行解析.效率高,适合于小数据解析. 谷歌提供的GDataXMLNode. 解析工具: GD

IOS中JSON数据的解析

IOS中JSON数据解析 官方为我们提供的解析JSON数据的类是NSJSONSerialization,首先我们先来看下这个类的几个方法: + (BOOL)isValidJSONObject:(id)obj; 判断一个数据对象是否可以转化为JSON数据 + (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error; 将JSON数据写为NSData数据,其中opt参数

iOS网络数据解析

iOS开发过程中,网络数据的传输过程一般是:客户端发送请求给服务器,服务器接收到客户端发送的网络请求后返回相应的数据.此时客户端需要把服务器返回的数据转化为前段和移动端开发中使用的数据格式(如OC/java).后台服务器一般使用php.java..net进行开发,而前段和移动端使用的一般是OC/JAVA/HTML/CSS/JS,做好前后端的数据交互极为重要,如今数据交互常用的就是JSON和XML.下面就iOS开发过程中的JSON解析和XML解析进行简单的说明. 一.JSON解析 JSON是一种轻

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

iOS之网络数据下载和JSON解析 简介 在本文中笔者主要给大家介绍IOS如何利用NSURLConnection从网络上下载数据,如何解析下载下来的JSON数据格式,以及如何显示数据和图片的异步下载显示. 涉及到的知识点: 1.NSURLConnection 异步下载和封装 2.JSON格式和JSON格式解析 3.数据显示和使用SDWebImage异步显示图片 内容 1.网络下载基础知识介绍 什么是网络应用? 需要通过联网进行操作的应用 网络应用的程序结构? c/s结构:即客户端/服务端 常见的

iOS开发——网络编程OC篇&amp;(九)数据解析

数据解析 关于iOS开发的中数据解析的方法有两种JSON和XML,这里只做简单的介绍,会使用就可以了. JSON—— 关于JSON的解析经过很多爱好者的分析使用相同自带的还是最好的,不管是从使用的容易度还是性能方面 NSJSONSerialization 1 -(void)start 2 { 3 4 NSString* path = [[NSBundle mainBundle] pathForResource:@"Notes" ofType:@"json"]; 5

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数据了 ,也截下