申明:此为本人学习笔记,若有纰漏错误之处的可留言共同探讨
/*
xml解析方式分为:
1.系统提供的方式sax
2.第三方控件解析方式dom (本篇只讲dom解析)
dom解析步骤
0 导入第三方类
1 在根据指示修改环境(在文章最下面)
2 创建GDataXMLDocument
3 获取根节点
4 取出标签中的属性
5 (根据要求)取出标签外面的元素elementsForName...objectAtIndex...stringValue 或者里面的属性attributeForName...stringValue
*/
附上Demo和素材:http://yunpan.cn/cFJwrqpbJZunX (提取码:f105)(ps 素材是demo中的example.xml)
// dom解析数据
// 创建文档
GDataXMLDocument *doc = [[GDataXMLDocument alloc]initWithData:data options:0 error:nil];
// 创建根节点
GDataXMLElement *rootElement = [doc rootElement];
GDataXMLElement *a1Element = [[rootElement elementsForName:@"a1"]objectAtIndex:0];
// 取出 <>的内部属性
NSString *key1 =[[a1Element attributeForName:@"key1"]stringValue];
NSLog(@"key1 == %@",key1);
// 取出 <>的内部属性
NSString *key2 = [[a1Element attributeForName:@"key2"]stringValue];
NSLog(@"key2 == %@",key2);
// 取出 <>的外部属性
GDataXMLElement *name1 = [[rootElement elementsForName:@"name1"]objectAtIndex:0];
NSString *name1Key1 = [name1 stringValue];
NSLog(@"name1Key1 == %@",name1Key1);
GDataXMLElement *secondElement = [[rootElement elementsForName:@"second"]objectAtIndex:0];
GDataXMLElement *a2Element = [[secondElement elementsForName:@"a2"]objectAtIndex:0];
// 取出 <>的内部属性
NSString *a2Key1 = [[a2Element attributeForName:@"key1"]stringValue];
NSLog(@"a2Key1 == %@",a2Key1);
// 取出 <>的内部属性
NSString *a2Key2 = [[a2Element attributeForName:@"key2"]stringValue];
NSLog(@"a2key2 == %@",a2Key2);
// 取出 <>的外部属性
GDataXMLElement *name2 = [[secondElement elementsForName:@"name2"]objectAtIndex:0];
NSString *name2Key1 = [name2 stringValue];
NSLog(@"name2Key1 == %@",name2Key1);
// 取出 <>的外部属性
GDataXMLElement *int2 = [[secondElement elementsForName:@"int2"]objectAtIndex:0];
NSString *int2key = [int2 stringValue];
NSLog(@"int2 == %@",int2key);
或者还是把自动释放池打开,采用单独使用手动释放第三方类的内存方法