你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS UI13_數據解析XML_,JSON

iOS UI13_數據解析XML_,JSON

編輯:IOS開發綜合

- (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

 
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved