XML解析(DOM)








代码示例

#import "ViewController.h"

#import "GDataXMLNode.h"

#import "Video.h"


@interface ViewController ()


/**所有数据的容器*/

@property(nonatomic,strong)NSMutableArray *videos;


@end


@implementation ViewController


- (NSMutableArray *)videos

{

    if (_videos == nil) {

        _videos = [NSMutableArray array];

    }

    return _videos;

}


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {


    // 1. url

    NSURL *url = [NSURL URLWithString:@"http://192.168.10.9/videos.xml"];

    

    // 2. 请求

    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:1 timeoutInterval:2.0f];

    

    // 3. 连接

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

        

        // XML整个读入内存, 对应的就是GDataXMLDocument对象

        GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data error:NULL];

        

//        NSLog(@"%@", document.rootElement.children);// document.rootElement.children--videos

        

        

        for (GDataXMLElement *element in document.rootElement.children) {

            

//            NSLog(@"---->%@", element); // ---> 对应的是video对象

            // 创建video对象

            Video *video = [[Video alloc] init];

    

            // 这个遍历就是取出Video对应的所有属性值

            for (GDataXMLElement *node in element.children) {

//                NSLog(@"===>%@ ---> %@", node.name, node.stringValue);

                // 在这里给给对象赋值

                [video setValue:node.stringValue forKeyPath:node.name];

            }

            

            // 跟踪attributes

//            NSLog(@"%@", element.attributes);

            // 遍历element.attributes数组,拿到属性值

            for (GDataXMLNode *att in element.attributes) {

                

//                NSLog(@"att.name = %@ att.stringValue = %@", att.name, att.stringValue);

                

                // kvc

                [video setValue:att.stringValue forKeyPath:att.name];

            }

            

            // 模型添加到数组

            [self.videos addObject:video];

        }

        

        NSLog(@"搞定 %@", self.videos);

        

    }];

}


@end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值