加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML/JSON解析

发布时间:2020-12-16 05:47:43 所属栏目:百科 来源:网络整理
导读:#pragma mark -JSon 解析 - ( void )button3Action:( UIButton *)button { //1. 找到文件路径 NSString *filePath = [[ NSBundle mainBundle ] pathForResource : @"Teachers" ofType : @"txt" ]; NSData *data = [ NSData dataWithContentsOfFile :filePath
#pragma mark -JSon解析
- (void)button3Action:(UIButton*)button
{
//1.找到文件路径
NSString*filePath = [[NSBundlemainBundle]pathForResource:@"Teachers"ofType:@"txt"];

NSData*data = [NSDatadataWithContentsOfFile:filePath];

//2.通过系统自带的json解析工具解析数据
NSMutableArray*array = [NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingMutableContainerserror:nil];

NSLog(@"array = %@",array);

for(NSMutableDictionary*dicinarray) {
Student*stu = [[Studentalloc]init];
[stusetValuesForKeysWithDictionary:dic];//把字典里Value赋值给Model的属性
[
self.allStudentArrayaddObject:stu];
@"gender = %@ name = %@ number = %@ phone = %@",stu.gender,164)">name,164)">number,164)">phone);
}

jsonKit工具解析数据
NSMutableArray*array2 = [dataobjectFromJSONData];
@"array2 = %@",array2);
}

#pragma mark - Domvoid)button2Action:(// NSLog(@"dom解析");

@"Students"@"txt"];
dataWithContentsOfFile:filePath];


创建dom解析工具对象
GDataXMLDocument*xmlDocument = [[GDataXMLDocumentalloc]initWithData:dataoptions:0error:nil];

获取根节点
GDataXMLElement*rootElement = xmlDocument.rootElement;
//NSLog(@"root = %@",rootElement);

//6.创建存放model学生的数组
allStudentArray= [NSMutableArrayarray];

//3.遍历根节点上的子节点
for(GDataXMLElement*subElementinrootElement.children) {
//NSLog(@"子节点= %@",subElement);

//5.循环创建存放学生属性值的对象
Student*stu = [[Studentalloc]init];

//4.遍历子节点上的子节点
GDataXMLElement*ssubElementinsubElement.children) {

//7.kvc进行赋值
[stu
setValue:ssubElement.stringValueforKey:ssubElement.name];

}
[
addObject:stu];
[stu
release];
}
// GDataXMLElement *twoElement = [rootElement.children objectAtIndex:1];
// NSLog(@"获取第二个子节点
Student*stuinallStudentArray) {
@"number = %@ time = %@ name = %@ address = %@",164)">time,164)">address);
}

}

#pragma mark - sax
// SAX解析特点:逐行解析一个一个按每个标签进行解析
优点适合处理大型数据不占内存
缺点不能对某个标签进行修改不能定位到某个指定的标签

- (
void)buttonAction:(获取文件
@"txt"];

将文件转换成NSData类型
用系统自带工具NSXMLParse解析数据
NSXMLParser*parser = [[NSXMLParserinitWithData:data];

设置代理签订协议并使用代理方法解析
parser.
delegate=self;

开始解析数据XML
[parser
parse];
[parser
release];

}

#pragma mark -- 1.开始解析void)parserDidStartDocument:(NSXMLParser*)parser
{
开始解析");
注意初始化方法写在只走一次的方法里
初始化数组
array];

}

#pragma mark -- 2.开始解析标签
-(void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName attributes:(NSDictionary*)attributeDict
{
开始标签

根据开始标签stu判断是否是学生,如果是创建一个学生对象
if([elementNameisEqualToString:@"stu"]) {
将学生对象加入数组中
[
release];
}
currentElement= elementName;

在一个方法里用到另一个方法的参数需要一个中间变量(把它作为属性),33)">来传值
}

#pragma mark --3.解析标签值NSXMLParser*)parser foundCharacters:(NSString*)string
{
// NSLog(@"string = %@",string);
取出学生对象并赋值
Student*stu = [self.allStudentArraylastObject];
[stusetValue:stringforKey:currentElement];
}
#pragma mark --4.结束解析标签NSXMLParser*)parser didEndElement:(NSString*)qName
{
currentElement=nil;
结束标签
}
#pragma mark --5.结束解析void)parserDidEndDocument:(NSXMLParser*)parser
{
address);
}
结束解析");
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读