XML/JSON解析

#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(@"获取第二个子节点woelement);
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);
}
结束解析");
}

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念