//
// ViewController.m
// JsonAndXml
//
// Created by oyf on 16/9/23.
// Copyright © 2016年 mac. All rights reserved.
//
#import "ViewController.h"
#import "Model.h"
#import "GDataXMLNode.h"
@interface ViewController ()<NSXMLParserDelegate>
@property (nonatomic,strong) NSMutableArray *data;
@property (nonatomic,strong) Model *myModel;
@property (nonatomic,copy) NSString *currentElement;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// [self Json];
// [self SaxXml];
// [self DomXml];
[self DomXm2];
}
-(void)Json{
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://khd.shangbw.com/api/posts.ashx?action=list&category=1800&per=20&page=1"]];
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
// NSLog(@"%@",dict);
NSArray *arr = [dict objectForKey:@"data"];
self.data = [[NSMutableArray alloc]init];
for (int i=0; i<arr.count; i++) {
Model *model = [[Model alloc]init];
model.post_title = [[arr objectAtIndex:i] objectForKey:@"post_title"];
model.post_excerpt = [[arr objectAtIndex:i] objectForKey:@"post_excerpt"];
[self.data addObject:model];
}
// NSLog(@"%@",self.data);
}
-(void)SaxXml{
NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"data.xml" ofType:nil]];
NSXMLParser *parser = [[NSXMLParser alloc]initWithData:data];
parser.delegate = self;
[parser parse];
}
-(void)parserDidStartDocument:(NSXMLParser *)parser{
//解析开始
// NSLog(@"parserDidStartDocument");
self.data = [[NSMutableArray alloc]init];
}
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict{
//遇到开始标签,如<name>福州</name> : <name>为开始标签
// NSLog(@"didStartElement");
if ([elementName isEqualToString:@"city"]) {
self.myModel = [[Model alloc]init];
}
self.currentElement = elementName;
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
//标签中的值
// NSLog(@"%@",string);
if ([self.currentElement isEqualToString:@"name"]) {
self.myModel.post_title = string;
}else if([self.currentElement isEqualToString:@"enname"]){
self.myModel.post_excerpt = string;
}
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
//遇到结束标签,如<name>福州</name> : </name>为结束标签
// NSLog(@"didEndElement");
if ([elementName isEqualToString:@"city"]) {
[self.data addObject:self.myModel];
}
}
-(void)parserDidEndDocument:(NSXMLParser *)parser{
//解析结束
NSLog(@"parserDidEndDocument");
NSLog(@"数据源为:%@",self.data);
}
-(void)DomXml{
self.data = [[NSMutableArray alloc]init];
NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"data_old.xml" ofType:nil]];
GDataXMLDocument *domXml = [[GDataXMLDocument alloc]initWithData:data options:0 error:nil];
GDataXMLElement *rootElement = domXml.rootElement;
// NSLog(@"%@",[rootElement elementsForName:@"citys"]);
for (GDataXMLElement *em1 in [rootElement elementsForName:@"citys"]) {
for (GDataXMLElement *em2 in [em1 elementsForName:@"city"]) {
// NSLog(@"%@",[[[em2 elementsForName:@"name"] objectAtIndex:0] stringValue]);
// NSLog(@"%@",[[[em2 elementsForName:@"enname"] objectAtIndex:0] stringValue]);
Model *model = [[Model alloc]init];
model.post_title = [[[em2 elementsForName:@"name"] objectAtIndex:0] stringValue];
model.post_excerpt = [[[em2 elementsForName:@"enname"] objectAtIndex:0] stringValue];
[self.data addObject:model];
}
}
NSLog(@"%@",self.data);
}
-(void)DomXm2{
self.data = [[NSMutableArray alloc]init];
NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"data.xml" ofType:nil]];
GDataXMLDocument *domXml = [[GDataXMLDocument alloc]initWithData:data options:0 error:nil];
GDataXMLElement * root =domXml.rootElement;
for (GDataXMLElement * em1 in [root elementsForName:@"citys"]) {
for (GDataXMLElement *em2 in [em1 elementsForName:@"city"]) {
Model * model=[[Model alloc]init];
NSString * name=[[em2 attributeForName:@"name"] stringValue];
NSString * enname=[[em2 attributeForName:@"enname"] stringValue];
model.post_title=name;
model.post_excerpt=enname;
NSLog(@"name=%@,enneme=%@",name,enname);
[self.data addObject:model];
}
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end