数据解析

来源:互联网 发布:linux命令 mkdir 编辑:程序博客网 时间:2024/06/11 16:35

#parser


#import "ParserXML.h"

@interface ParserXML()<NSXMLParserDelegate>

// 用来临时保存字符串内容

@property(nonatomic,copy)NSString *tempStr;


@end

@implementation ParserXML


- (void)dealloc{

    [_stuArrrelease];

   _stuArr = nil;

    [_tempStrrelease];

   _tempStr = nil;

    [superdealloc];

}


- (void)startParser

{

    //根据文件名和类型,获取文件所在的路径

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

    

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

   NSData *date = [NSDatadataWithContentsOfFile:path];

    

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

   NSXMLParser *parser = [[NSXMLParseralloc] initWithData:date];

    

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

    parser.delegate =self;

    

    // 开始解析

    [parserparse];

}

#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 = [NSMutableArrayarray];

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

        //二级节点创建一个对象接受数据,并放到学生数组里

       Student *stu = [[Studentalloc] init];

        [self.stuArraddObject:stu];

        [sturelease];

    }

}

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

    //得到节点里面内容

   self.tempStr = string;

}

- (void)parser:(NSXMLParser *)parser

 didEndElement:(NSString *)elementName

  namespaceURI:(NSString *)namespaceURI

 qualifiedName:(NSString *)qName

{

    //只要节点结束, 就会走这个方法

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

   Student *stu = [self.stuArrlastObject];

    [stusetValue:self.tempStrforKey:elementName];

    

}


@end


#DOM

#import "DOMXML.h"

#import "GDataXMLNode.h"

#import "Student.h"


@implementation DOMXML


+ (NSMutableArray *)DOMStart{

    NSMutableArray *strArray = [NSMutableArrayarray];

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

   NSData *data = [NSDatadataWithContentsOfFile:path];

    //用第三方进行数据解析

    // 1.要解析的数据 2.没用 3.错误信息

   GDataXMLDocument *document = [[GDataXMLDocumentalloc] initWithData:dataoptions:0 error:nil];

    // 获取根节点

   GDataXMLElement *rootElement = [document rootElement];

    //找到根节点,找到里面所有的student节点,装在一个数组;

   NSArray *arr = [rootElement elementsForName:@"Student"];

    

    //循环遍历所符合条件的节点

   for (NSInteger i =0; i < arr.count; i++) {

       GDataXMLElement *stu = arr[i];

       Student *tempStu = [[Studentalloc] init];

        // 继续寻找节点

       GDataXMLElement *stuName = [[stu elementsForName:@"name"] lastObject];

        tempStu.name = stuName.stringValue;

        [strArrayaddObject:tempStu];

        [tempSturelease];

    

    }

   return strArray;

}

@end


#JSON

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

   NSData *data = [NSDatadataWithContentsOfFile:path];

    //指定一个可变的容器 来接收

    NSMutableDictionary *dic = [NSJSONSerializationJSONObjectWithData:data options:NSJSONReadingMutableContainerserror:nil];

    NSMutableArray *moiveArr = [NSMutableArrayarray];

    

   for (NSDictionary *mDicin dic[@"result"]) {

       Movie *movie =[[Moviealloc] init];

        [movie setValuesForKeysWithDictionary:mDic];

        [moiveArraddObject:movie];

        [movierelease];

    }




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝吃了润滑油怎么办 透明胶带撕不起怎么办 马克笔颜料没了怎么办 匡威鞋掉色了怎么办 补眉后颜色很淡怎么办 磨砂画出毛了怎么办 纹眉毛不上色怎么办 四岁儿童龋齿怎么办 墙没有刷乳胶漆怎么办 壁纸不想要了怎么办 自粘墙纸撕不掉怎么办 打雷了怎么办主题画 打雷了怎么办小班教案 费雪小火车不走怎么办 宝宝睡觉要开灯怎么办 门上有人做记号怎么办 颜料粘上衣服洗不掉怎么办 半夜有小偷开锁怎么办 幼儿园人数较多怎么办 附近幼儿园拖班招满了怎么办 6个月大宝宝拉肚子怎么办 婴儿容易吐奶怎么办 新生儿睡眠时间颠倒怎么办 婴儿睡觉黑白颠倒怎么办 婴儿黑白颠倒了怎么办 宝宝肠粘膜受损怎么办 dnf会卡换装怎么办? 孩子不讲理蛮横怎么办 孩子不爱上学了怎么办 幼儿园孩子不爱上学怎么办 额头撞肿了怎么办 两岁半宝宝说话晚怎么办 1岁宝宝拉肚子怎么办? 小孩嗓子老哑怎么办 小孩嗓子经常哑怎么办 小孩子一年级成绩差怎么办 小孩子一年级学习成绩差怎么办 楼上有孩子扰民怎么办 隔壁小孩太吵怎么办 楼上孩子太吵怎么办 泰国贴纸签小孩怎么办