xml解析---DOM

XML的解析方式有2种

(1)DOM:一次性将整个XML文档加载进内存,比较适合解析小文件

(3)SAX:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件 

XML解析方式的选择建议:

大文件:NSXMLParser(系统的解析sax)、libxml2

小文件:GDataXML  (dom解析)

GDataXMLNode 框架解析

// responseObject就是需要解析的XML二进制数据
[
self  GetXMLDataWithData:responseObject];

// DOM解析XML数据
- (
void)GetXMLDataWithData:(NSData*)data
{
   
// DOM解析:根据元素层级,一层一层的往下面取!
   
//需要的数据只能存放在属性内容/或者子元素中!
   
//遍历每一个元素的属性数组/子元素数组...
   
//遍历完毕之后,通过node.name node.stringvalue来获得想要的值!
   
   
   
// 1.得到整个XML文档!
   
GDataXMLDocument*dom = [[GDataXMLDocumentalloc]initWithData:dataoptions:0error:NULL];
   
NSLog(@"%@",dom);
   
   
// 2.通过XML文档,得到根元素中的内容
   
GDataXMLElement*rootElement = dom.rootElement;

 // 3.如果元素有属性内容: rootElement.attributes;子元素:rootElement.children
   
   
//遍历根元素的所有子元素!
    [rootElement.
children enumerateObjectsUsingBlock:^( id obj, NSUInteger idx,BOOL*stop) {
      
       
//
       
GDataXMLElement*vedio  Element = obj;
       
       
//有多少个vedio元素就创建多少个模型!
       
ITObjc*xml = [[ITObjc alloc]init];
//遍历vedio元素中的属性
        [vedioElement.
attributes enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL*stop) {
           
//
          
// NSLog(@"%@",obj);
           
//节点/标签/属性
           
GDataXMLNode*node = obj;
           
           
NSLog(@"%@,%@",node.name,node.stringValue);
           
           
//给数据模型赋值
            [video
setValue:node.stringValueforKey:node.name];
        }];
       
//数据模型添加到数组源中
       
        [
self.xml  addObject:xml];

    }];
   

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值