iOS UI13_資料解析XML_,JSON

來源:互聯網
上載者:User

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

#import Student.h

 

 

@interface parserXML : NSObject

 

//用一條屬性,數組,來裝所有解析好的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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.