ios之json,xml解析

JSON解析步骤:

1.获取json文件路径

NSString*path = [[NSBundle mainBundle] pathForResource:@"Teacher"ofType:@"json"];

2.读取文件中的data

NSData *data = [NSData dataWithContentsOfFile:path];

3.把data转化为可变数组或者可变字典 是字典还是数组要看json最外层数据是什么.NSJSONSerialization是重点

NSError *error = nil;
NSMutableArray*dataArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainerserror:&error];

使用JSONKit解析JSON

JSONKit是外部类目 需要导入

先导入头文件 JSONKit中有objectFromJSONData方法 这个方法是里添加了各种类目 类目的作用是 一个UIData类型的对象
调用该方法后 会返回一个你里面是什么容器 返回就是什么容器的对象 调用之后返回的是一个数组类型的对象 而这个数组中存放的就是json文件中的内容
xml解析文件
SAX逐行解析数据 (采用协议回调机制)
解析过程由NSXMLParserDelegate协议?方法回调
解析过程:开始标签->取值->结束标签->取值
思考:1.从什么位置初始化装model得数组
    2.从什么位置初始化model 从什么位置可以拿出数据
    3.从什么位置给model赋值
    4.从什么位置可以打印到数组

- (void)parserDidStartDocument:(NSXMLParser *)parser
{
    // 初始化数组
    self.dataArray = [NSMutableArray array];
    NSLog(@"已经开始分析文件");
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    // 初始化model

    if ([elementName isEqualToString:@"Student"]) {
        self.model = [[StudentModel alloc] init];
    }
    NSLog(@"<%@>", elementName);
    // NSLog(@"开始遇到节点");
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    // 保存字符串
    self.string = string;
    //NSLog(@"发现字符");
    NSLog(@"%@", string);
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
// 给model赋值
    if ([elementName isEqualToString:@"name"]) {
        self.model.name = self.string;
    } else if ([elementName isEqualToString:@"gender"]) {
        self.model.gender = self.string;
    } else if ([elementName isEqualToString:@"age"]) {
        self.model.age = self.string;
    } else if ([elementName isEqualToString:@"motto"]) {
        self.model.motto = self.string;
    } else if ([elementName isEqual;ldghToString:@"Student"]) {
        // 节点名字等于Student的时候一个model就赋值完成了 可以装进数组中
        [self.dataArray addObject:self.model];
    [_model release];
  }
    NSLog(@"遇到结束节点触发");
    NSLog(@"</%@>", elementName);
}
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
    NSLog(@"%@", self.dataArray);
    NSLog(@"已经结束分析文件");
}

现在一般多使用json解析.

时间: 2024-12-30 04:22:34

ios之json,xml解析的相关文章

ios 自带xml 解析,TBXMLParser解析

今天看了下苹果xml 解析,写了个小demo 心想还是 在博客上写点东西吧,毕竟很久很久都没有上来了 先上个效果图把 接下来 看下 工程目录图吧 本demo 分两种解析模式,一是苹果自带的, 首先先看下苹果自带的吧,工程文件为 NoteXMLParser 文件 ,另一种解析模式 是 NotesTBXMLParser文件 NoteXMLParser.h 文件代码如下 : // // NoteXMLParser.h // TestXML // // Created by choni on 14-5-

iOS开发之XML解析

iOS开发之XML解析 1.XML格式 <?xml version="1.0" encoding="utf-8" ?> 表示XML文件版本, 内部文本使用的编码 <root> 表示根节点 <CityName>北京</CityName>  一个结点, CityName是结点名, 北京结点值 <Item key="1" value="A"></Item>  

JSON&amp;XML 解析总结

JSON & XML解析 JSON(数据传输): JSON具有对象(字典)和数组两种数据格式.字典用“{}”,数组用“[]”.其实也是key-value(字符串,数值,布尔类型,对象,空对象,数组)键值对. JSON 可以与Object-C相互转换  ->则是JSON的解析过程(正向与逆向的解析-为了说明自己定义的正逆)->可用于数据的持久化,将JSON数据写入文件中保存(逆向):从文件中读出数据(正向). JSON ->Object-C(正向):jsondata->jso

IOS开发之XML解析以及下拉刷新上拉加载更多的分享

IOS开发之XML解析 1.XML格式 <?xml version="1.0" encoding="utf-8" ?> 表示XML文件版本, 内部文本使用的编码 <root> 表示根节点 <CityName>北京</CityName>  一个结点, CityName是结点名, 北京结点值 <Item key="1" value="A"></Item>  

iOS开发之XML解析代码

iOS开发之XML解析代码 //1.加载和解析XML文件 NSString *path = [[NSBundle mainBundle] pathForResource:@"xml.txt" ofType:nil]; NSData *data = [[NSData alloc] initWithContentsOfFile:path]; // GDataXMLDocument 表示XML文档对象 // initWithData 使用NSData初始化, 就是解析 GDataXMLDoc

IOS JSON/XML解析

<pre name="code" class="objc">/*---------------------------XML_SAX解析-------------------------------*/ //XML SAX解析 - (IBAction)XML_SAX:(id)sender { NSData *da = [[NSData alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathFor

IOS中的XML解析

一.XML的解析方式有2种: DOM:一次性将整个XML文档加载进内存,比较适合解析小文件 SAX:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件 二.在IOS中,解析XML的手段有很多 1.苹果原生 NSXMLParser:SAX方式解析,使用简单. 2.第三方框架 libxml2:纯C语言,默认包含在iOS SDK中,同时支持DOM和SAX方式解析 GDataXML:DOM方式解析,由Google开发,基于libxml2 三.XML解析方式的选择建议 大文件:NSXMLPa

IOS中的XML解析之DOM和SAX

一.介绍 dom是w3c指定的一套规范标准.核心是按树形结构处理数据,dom解析器读入xml文件并在内存中建立一个结构一模一样的"树",这树各节点和xml各标记相应,通过操纵此"树"来处理xml中的文件.xml文件非常大时.建立的"树"也会大,所以会大量占用内存. sax解析器核心是事件处理机制.比如解析器发现一个标记的開始标记时.将所发现的数据会封装为一个标记開始事件,并把这个报告给事件处理器.事件处理器再调用方法(startElement)处

iOS开发JSON文件解析数据成Model的过程简单介绍

本文内容来源:http://blog.csdn.net/smking/article/details/40432287 JSONModel, Mantle 这两个开源库都是用来进行封装JSON->Model的, 想想看, 直接向服务器发起一个请求,然后回来后,就是一个Model, 直接使用, 这是一个多么美好的事情. 先说说这两个的差别. 这两个使用的方法其实都差不多, 详细的使用方法请直接GitHub上找, 还是比较简单地. 就我个人来说JSONModel相对起来使用较为简单,而Mantle使