XML解析之DOM解析
来源:互联网 发布:宏业斯维尔软件 编辑:程序博客网 时间:2024/06/04 23:26
XML解析之DOM解析
1. 为什么要进行数据解析?
我们从服务器上获取的数据都是二进制的数据,客户端是无法直接使用的.就需要把二进制数据转化为客户端可以直接使用的OC对象
2. 从服务器获取的二进制数据有哪些
- 1 html
- 2 图片
- 3 视频
- 4 音频
- 5 zip
- 6 json
- 7 xml
- …..
而这其中我们最常见的莫过于JSON,偶尔也会有XML的出现,而今天我的重点就是讲解小众的XML解析.XML的解析方式有两种,一种是SAX解析(比较繁琐),第二种就是我们今天要说的DOM解析
3. 用到的框架
因为iOS系统不支持DOM解析,所以我们就需要用到框架,比较常用的就是GData,下面给出一张图帮助大家理解这个框架
在这里我把自己遇见的问题也一并列出,当我们导入框架的时候会报错,下图为解决方法
4. GData解析XML的步骤
- 1 获取XML文档
- 2 获取XML文档的根标签
- 3 遍历根标签,获取根标签的子标签(video标签),创建video标签对应的模型对象.
- 4 遍历video标签,获取video标签的子标签,给模型对象的属性赋值.
- 5 遍历video标签,获取video标签的属性,给模型对象的videoId属性赋值.
5. GData解析XML的代码实现(只罗列核心代码,至于模型的话根据不同情况自定义即可)
-(void)DOM:(NSData *)data{ // 1.获取XML文档 GDataXMLDocument *XMLDocument = [[GDataXMLDocument alloc] initWithData:data error:NULL]; // 2.获取XML文档的根标签 GDataXMLElement *rootElement = XMLDocument.rootElement; // 创建模型数组,将模型对象添加到模型数组中 NSMutableArray *videoM = [NSMutableArray array]; // 3.遍历根标签,获取根标签的子标签(video标签),创建video标签对应的模型对象 for (GDataXMLElement *videoElement in rootElement.children) { // 创建video标签对应的模型对象 VideoModel *video = [[VideoModel alloc] init]; // 将模型对象添加到模型数组中 [videoM addObject:video]; // 4.遍历video标签,获取video标签的子标签,给模型对象的属性赋值 for (GDataXMLElement *subElement in videoElement.children) { // KVC给模型的属性赋值 [video setValue:subElement.stringValue forKey:subElement.name]; } // 5.遍历video标签,获取video标签的属性,给模型对象的videoId属性赋值 NSLog(@"%@",[videoElement.attributes class]); for (GDataXMLNode *K in videoElement.attributes) { // KVC给模型的videoId属性赋值 [video setValue:attr.stringValue forKey:attr.name]; } } NSLog(@"%@",videoM);}
最后,我想说一句:如果遇见数据是XML,那就..那就…忍了吧!!!
0 0
- XML解析之DOM解析
- XML解析之DOM解析
- xml解析之----DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- XML解析之DOM解析
- xml解析之dom解析
- 解析xml之--DOM
- xml解析之Dom
- XML解析之 DOM
- XML解析之Dom
- XML解析之DOM
- File存储
- NodeJS+html5+css3 带人机对战和人人对战的 五子棋
- 关于Python杂七杂八的小东西(搭建Pycharm+Anaconda、删除文档首行小程序、皮尔逊相关系数小程序)
- ex2.py
- 正则表达式的常用方法和属性
- XML解析之DOM解析
- R 如何在同一个界面画出多张图形
- Drupal7函数之drupal_set_message()
- Additive Number -- leetcode
- 浅析数据结构与算法12--无向图相关算法基础
- Java transient关键字使用
- [安卓自定义控件]BadgeView源码解析
- 161.In your database instance, the user sessions are connected to the database server from the remot
- ex3.py