zoukankan      html  css  js  c++  java
  • 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






  • 相关阅读:
    CSS Sprites技术
    js Event对象
    iphone上做webapp时总会识别一串数字为手机号码并变黑显示
    获得touch事件,jquery绑定事件监听器,ios设备上打开touch状态以响应focus,active等伪类
    访问局域网内数据库
    理解javascript的闭包,原型,和匿名函数及IIFE
    socket跟TCP/IP 的关系,单台服务器上的并发TCP连接数问题
    最详细的Log4j使用教程
    [Java IO]06_JSON操作
    mybatis一次执行多条SQL语句
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7228849.html
Copyright © 2011-2022 走看看