码迷,mamicode.com
首页 > 移动开发 > 详细

ios之json,xml解析

时间:2015-09-18 23:13:59      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

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解析.

ios之json,xml解析

标签:

原文地址:http://www.cnblogs.com/pp123/p/4820478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!