• iOS UI13_数据解析XML_,JSON


    - (IBAction)parserButton:(id)sender {

        parserXML *parser =[[parserXML alloc] init];

        [parser startParser];

        //遍历学生的姓名

        for (Student *stu in parser.stuArr) {

            NSLog(@"%@",stu.name);

        }

        

    }


    - (IBAction)domButton:(id)sender {

        NSMutableArray *stuArr =[DOMXML DOMStart];

        for (Student *stu in stuArr) {

            NSLog(@"%@",stu.name);

        }

       

    }


    - (IBAction)jsonButton:(id)sender {

        //对本地数据进行解析

        

        NSString *path=[[NSBundle mainBundle] pathForResource:@"movielist" ofType:@"txt"];

        NSData *data =[NSData dataWithContentsOfFile:path];

        //第二个參数,指定一个可变的容器来接收解析之后的数据

        NSMutableDictionary *dic=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

        


        

        NSMutableArray *movieArr =[NSMutableArray array];

        for (NSMutableDictionary *temp in dic[@"result"]) {

            Movie *movie =[[Movie alloc] init];

            [movie setValuesForKeysWithDictionary:temp];

            [movieArr addObject:movie];

            [movie release];

        }

        

       

    }







    parserXML.h

    #import <Foundation/Foundation.h>

    #import "Student.h"



    @interface parserXML : NSObject<NSXMLParserDelegate>


    //用一条属性,数组,来装全部解析好的model对象

    @property(nonatomic,retain)NSMutableArray *stuArr;


    //用来暂时保存节点内容的字符串

    @property(nonatomic,retain)NSString *tempStr;


    //给一个開始解析的方法

    -(void)startParser;



    @end



    parserXML.m

    //

    //  parserXML.m

    //  UI13_数据解析XML_,JSON

    //

    //  Created by dllo on 15/8/14.

    //  Copyright (c) 2015 zhozhicheng. All rights reserved.

    //


    #import "parserXML.h"


    @implementation parserXML


    -(void)startParser

    {

        //依据文件名称和类型,获取文件所在路径

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

        //把路径文件内容转换成NSData对象保存

        NSData *data = [NSData dataWithContentsOfFile:path];

        // 创建一个xml的解析工具

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

        //须要设置解析工具的代理人

        parser.delegate =self;

        //開始解析

        [parser parse];

        

    }





    #pragma mark 開始运行协议方法

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

    {

        //这种方法仅仅要一碰到节点就会自己主动走这种方法

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

            //当碰到根节点Student,须要对数组进行初始化

            self.stuArr =[NSMutableArray array];

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

            //碰到student,意味着这是一个新的对象,须要创建一个对象来接收数据,而且放到学生数组中

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

            [self.stuArr addObject:stu];

            [stu release];

        }

    }


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

    {

        // 找到节点内容的时候须要调用,须要用一个属性来保存相应节点的内容string

        // 保存节点内容

        self.tempStr = string;

        

    }


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

    {

        

        //仅仅要到节点结束就会走这种方法

        //没有操作完的对象在数组的最后一位

        Student *stu = [self.stuArr lastObject];

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

    //        stu.name =self.tempStr;

    //    }

        //通过KVC进行赋值

        [stu setValue:self.tempStr forKey:elementName];

       

    }

    @end






  • 相关阅读:
    Python列表推导式,字典推导式,元组推导式
    python装饰器@,内嵌函数,闭包
    7-route命令
    6-mv命令
    5-ln链接命令
    4-linux建立用户用户组以及新用户的赋权
    3-gzip压缩解压命令
    2-date命令
    1-cp命令
    UIViewContentMode的各种效果
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7228849.html
Copyright © 2020-2023  润新知