XML解析之DOM解析



DOM简介

  • DOM : Document Object Model
  • DOM : 文档对象模型 (文档模型)
  • 一次性把XML文件全部加载到内存,内存消耗大,适合读写比较小的XML文件.
  • 之前的SAX方式只能读取XML文件,但是DOM方式可以修改XML文件,包括添加删除修改节点.
  • iOS系统默认不支持DOM解析,在iOS系统下解析DOM的话需要第三方框架.
  • 第三方框架 : GData/KissXML(XMPP中使用此框架)

GData中类的关系分析

集成GData框架

  • 导入GDataXMLNode第三方文件.
  • 解决GData的报错.

GData解析XML的步骤

1.获取XML文档.
2.获取XML文档的根标签.
3.遍历根标签,获取根标签的子标签(video标签),创建video标签对应的模型对象.
4.遍历video标签,获取video标签的子标签,给模型对象的属性赋值.
5.遍历video标签,获取video标签的属性,给模型对象的videoId属性赋值.

GData解析XML的实现

  • 模型类没有变化,还是SAX方式解析的那个模型类.
  • 从网络中获取到XML文件的二进制数据.
  • 代码实现 :
/// DOM方式解析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);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值