L与JSON数据结构解析工程
来源:互联网 发布:绵阳java程序员工资 编辑:程序博客网 时间:2024/06/05 15:36
//// RootViewController.m// UI_Lesson_17//// Created by xalo on 15/9/24.// Copyright All rights reserved.//#import "RootViewController.h"#import "GDataXMLNode.h"#import "JSONKit.h"#import "SBJSON.h"#import "CJSONDeserializer.h"@interface RootViewController ()<NSXMLParserDelegate>//使用NSXMLParser做XML解析时是基于协议回调的形式 所以要遵循NSXMLParserDelegate协议@end@implementation RootViewController- (void)viewDidLoad { [super viewDidLoad]; //使用SDK类中的JSON解析类进行解析 //.app应用程序包mainBundle NSString *JSONFilePath = [[NSBundle mainBundle]pathForResource:@"StudentInfo" ofType:@"json"]; NSString *JSONContent = [NSString stringWithContentsOfFile:JSONFilePath encoding:NSUTF8StringEncoding error:nil]; NSData *JSONData = [JSONContent dataUsingEncoding:NSUTF8StringEncoding]; NSArray *JSONResult = [NSJSONSerialization JSONObjectWithData:JSONData options:NSJSONReadingMutableContainers error:nil]; NSLog( @"%@", JSONResult); NSLog(@"%@", JSONFilePath); //第三方<img src="http://img.blog.csdn.net/20151030154842253?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />//JSONKit// NSArray *arrayJSON = [JSONContent objectFromJSONString]; NSArray *dataJSON = [JSONData objectFromJSONData]; for (int i = 0 ; i < [dataJSON count]; i ++) { NSDictionary *item = [dataJSON objectAtIndex:i]; NSLog( @"arrayJSON %@", [item objectForKey:@"name"]); NSLog( @"arrayJSON %@", [item objectForKey:@"age"]); NSLog( @"arrayJSON %@", [item objectForKey:@"sex"]); }//SBJSON SBJsonParser *jsonparser = [[SBJsonParser alloc]init]; NSArray *jsonarray = [jsonparser objectWithString:JSONContent]; for (int i = 0 ; i < [jsonarray count]; i ++) { NSDictionary *item = [ jsonarray objectAtIndex:i]; NSLog( @"jsonarray %@", [item objectForKey:@"name"]); NSLog( @"jsonarray %@", [item objectForKey:@"age"]); NSLog( @"jsonarray %@", [item objectForKey:@"sex"]); } //touchJSON NSArray *jsonArr = [[CJSONDeserializer deserializer]deserializeAsArray:JSONData error:nil]; for (NSDictionary *obj in jsonArr) { NSLog( @"%@ %@ %@",[obj objectForKey:@"name"], [obj objectForKey: @"age"], [obj objectForKey: @"sex"]); } // Do any additional setup after loading the view. NSString *XMLFilePath = [[NSBundle mainBundle]pathForResource:@"StudentInfo" ofType:@"xml"]; //// 获取文件内容 NSString *XMLContent = [NSString stringWithContentsOfFile:XMLFilePath encoding:NSUTF8StringEncoding error:nil]; // 文件内容转化为二进制格式 NSData *XMLData = [XMLContent dataUsingEncoding:NSUTF8StringEncoding]; //DOM解析 //1.生成xml文件对象 GDataXMLDocument *document = [[GDataXMLDocument alloc]initWithData:XMLData options:0 error:nil]; //2. 获取根节点对象 GDataXMLElement *rooeElement = [document rootElement]; //3.获取子节点 NSArray *subElements = [rooeElement elementsForName: @"student"]; //4.通过forin来得到每个student节点对象 for (GDataXMLElement *oneElement in subElements) { NSString *name = [[[oneElement elementsForName: @"name"]firstObject]stringValue]; NSInteger age = [[[[oneElement elementsForName: @"age"]firstObject]stringValue ] integerValue]; NSString *sex = [[[oneElement elementsForName: @"sex"]firstObject] stringValue]; NSLog( @"name%@ age%ld sex%@", name, age, sex); } //5.释放document所有权 [document release]; /* //XML SAX 工具解析 SAX:Simple API for XML。基于事件驱动的解析方式,逐行解析数据。(采用协议回调机制)逐行执行 //创建XML解析器对象 //获取文件路径 NSString *XMLFilePath = [[NSBundle mainBundle]pathForResource:@"StudentInfo" ofType:@"xml"];//// 获取文件内容 NSString *XMLContent = [NSString stringWithContentsOfFile:XMLFilePath encoding:NSUTF8StringEncoding error:nil];// 文件内容转化为二进制格式 NSData *XMLData = [XMLContent dataUsingEncoding:NSUTF8StringEncoding];// NSData *XMLData = [[NSData alloc]initWithContentsOfFile:XMLFilePath]; //创建XML解析器 NSXMLParser *XMLParser = [[NSXMLParser alloc]initWithData:XMLData]; //为解析器指定代理对象 XMLParser.delegate = self; //给解析器对象发送parse消息 开始解析XML数据 [XMLParser parse]; [XMLParser release];}#pragma mark - NSXMLParser Delegate -//协议方法 解析器开始解析- (void)parserDidStartDocument:(NSXMLParser *)parser{ //在解析器开始解析的时候会响应此协议 来通知代理对象解析开始 NSLog( @"%s", __FUNCTION__);}//协议方法 解析- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict{ NSLog( @"start element -> %@", elementName);//找到元素名称// NSLog( @"namespace -> %@", namespaceURI);//命名空间标志// NSLog( @"qualified -> %@", qName);//描述名称// NSLog( @"attributes -> %@", attributeDict);//属性字典 NSLog( @">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); */}//协议方法 完成解析- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ NSLog (@"end element -> %@", elementName);//找到结束标签 NSLog( @"--------------------------------------------");}//协议方法 找到对应节点值- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ NSLog( @"value - > %@", string); NSLog( @"............................................");}//协议方法 解析器结束- (void)parserDidEndDocument:(NSXMLParser *)parser{ NSLog( @"%s" , __FUNCTION__);}/*#pragma mark - Navigation// In a storyboard-based application, you will often want to do a little preparation before navigation- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller.}*/@end
0 0
- L与JSON数据结构解析工程
- XML.JSON数据结构解析
- XML、JSON数据结构解析
- XML,JSON数据结构解析
- JSON数据结构解析
- Python解析json数据结构范例
- 【Python】 如何解析json数据结构
- Python解析json数据结构范例
- UIday1502:XML 、JSON 数据结构解析
- Python解析json数据结构范例
- [TwistedFate]XML JSON数据结构解析
- UI XML,JSON 数据结构解析
- [L-php]PHP功能模块——PHP解析XML,JSON
- XML解析 与 JSON 解析
- JSON解析与读取
- JSON封装与解析
- json转换与解析
- Json打包与解析
- android笔记之消息 通知
- 详解java类的生命周期
- iPhone开发进阶(11)--- 多线程的使用与注意事项
- java 为pdf添加水印图片
- java Object类介绍
- L与JSON数据结构解析工程
- 用来显示学生的信息
- spring mvc和struts2比较
- 解决在tomecat启动时报 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListen
- Usaco2007 Nov 【Milking Time 】挤奶时间
- maven中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0
- POJ2247 Humble Numbers
- I18N
- angularjs 绑定enter事件的两种方法