数据解析
来源:互联网 发布: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];
}
- 数据解析
- 数据解析
- 数据解析
- 数据解析
- 数据解析
- 数据解析
- 数据解析
- 数据解析
- 数据解析
- 数据解析
- 数据解析
- 数据解析
- 数据解析
- 数据解析
- 数据解析
- 数据解析
- 数据解析
- 解析数据
- HDU 5367动态建立线段树
- iOS总结(自定义button)
- 瞧,这就是UE4 C++
- 解决Putty中文乱码
- OpenGL 顶点数组的使用
- 数据解析
- OD使用之查找 API的方法之一
- 解决问题E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录
- qt预编译 提高编译速度
- 《Java设计模式》之单例模式
- block(闭包)
- 拓扑
- hdu 5385 The path 贪心?构造
- 小白书之根据二叉树的先序遍历和中序遍历得出后序遍历