IOS网络笔记--xml解析之一(dom解析)
2015-10-13 19:42
309 查看
申明:此为本人学习笔记,若有纰漏错误之处的可留言共同探讨
/*
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);
或者还是把自动释放池打开,采用单独使用手动释放第三方类的内存方法
/*
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);
或者还是把自动释放池打开,采用单独使用手动释放第三方类的内存方法
相关文章推荐
- 【转】计算机网络_学习笔记 第三章 数据链路层
- httpcomponents-client-ga(4.5)
- httpcomponents-client-ga(4.5)
- Reachability网络判断
- linux内核网络参数somaxconn
- 概率图形模型(PGM)学习笔记(四)-贝叶斯网络-伯努利贝叶斯-贝叶斯多项式
- HTTP学习笔记
- 用过http api 发送邮件
- HTTP请求报文和HTTP响应报文
- android使用timer检测网络请求时长
- 【JMeter】Jmeter-完成一个http压力测试
- oracle 第07章 网络配置管理
- Android网络编程--获取网络图片
- android HttpUrlConnection 设置超时无效,等待时间很长的问题
- 黑马程序员——8.网络编程(网络模型、网络地址、传输协议(UDP、TCP/IP)、客户端和服务器端、URL)
- http://192.168.10.200:50070/windows访问不了 Linux可以
- 网络软件大潮清理“国内泡沫”
- ThreadLocal http://blog.jobbole.com/20400/
- Linux与BSD中TCP协议栈实现比较
- 网络编程 笔记(四) 地址族 数据序列