XML解析Gdata

做iOS开发一直都是用的Jason解析 最近一家公司是用的XML解析 好久都没有用过了 有些陌生了 今天来仔细的描述一下XML解析! 说到XML解析就一定要描述两个概念 一个 叫DOM 一个叫SAX SAX是Simple API for XML的缩写,它并不是由W3C官方所提出的标准,可以说是“民间”的事实标准。实际上,它是一种社区性质的讨论产物。虽然如此,在XML中对SAX的应用丝毫不比DOM少,几乎所有的XML解析器都会支持它。SAX是一种轻量型的方法,它是事件驱动的,也就是说,它并不需要读入整个文档,而文档的读入过程也就是SAX的解析过程。所谓事件驱动,是指一种基于回调(callback)机制的程序运行方法。还有就是DOM Dom解析是一口把东西吃进内存,我们需要读入整个的XML文档,然后在内存中创建DOM树,生成DOM树上的每个Node对象,当文档比较小的时候,这不会造成什么问题,但是一旦文档大起来,处理DOM就会变得相当费时费力。特别是其对于内存的需求,也将是成倍的增长,以至于在某些应用中使用DOM是一件很不划算的事,所以要解析大的东西就要用Sax,不过现在的设备性能越来越好,感觉差别应该不回太大,当然了 只是我个人这么认为,做开发的,一定要把用户的体验放在第一位,所以最好还是按照适合的方法来解决吧,好了,废话少说 上代码!

 GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:responseObject options:0 error:nil];
        
        // 获得文档的根元素 -- doc元素
        GDataXMLElement *root = doc.rootElement;
        
        // 获得根元素里面的body元素
        NSArray *elements = [root elementsForName:@"body"];
        
      
        
        // 遍历所有的body元素
        for (GDataXMLElement *videoElement in elements)
        {
            NSArray *arr=[videoElement elementsForName:@"mi_user_addresss"];
            NSLog(@"%ld",arr.count);
            for (GDataXMLElement *ement in arr)
            {
                NSArray *arr=[ement elementsForName:@"mi_user_address"];
               
                
                for (GDataXMLElement *Element in arr) {
                    
                    //取出每一个节点的元素的值
                    self.adress = [[WYAdress alloc] init];
                    GDataXMLElement *address=[[Element elementsForName:@"address"]objectAtIndex:0];
                    self.adress.address =[address stringValue];
                    
                 
//这个按照元素里面的属性取出来的值
self.id = [Element attributeForName:@"id"].stringValue.intValue;

顺便提一下还可以用这种方法来取

// 先获取路径然后再获取节点
NSString *path=@"/doc/body";
    //2.获取body节点
    GDataXMLElement *bodyElement=[rootElement nodesForXPath:path error:nil][0];

 

转载于:https://www.cnblogs.com/woaiwy/p/5747446.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值