苹果开发 笔记(74)GDataXML 解析 xml

前端之家收集整理的这篇文章主要介绍了苹果开发 笔记(74)GDataXML 解析 xml前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

ios xml 解析有不同方式,基于sax 和dom ,查看了一些介绍。查阅了一篇老文章介绍不同的解析的类 如何在你的项目选择适合的XML

前段时间第一个学习的ios里面用了这个xml解析,基于系统自带的NSXML 解析器。第三方有几种好用的如 TBXML、GdataxML 、KissXML 等。

GdataxML

下面我们尝试一下 GdataxML 解析了一个xml。
1. 首先点击进去下载GDataXML
2. 下载完拖放到工程目录,作为组使用,配置一下,在Build Phase 的 Link Binary With Library 添加 libxml2.dylib 动态库
3. 在工程Build setting 中找到Header Search Path 添加路径 /usr/include/libxml2 到路径中
4. 编译工程项目

这次我们选用人民网的 RSS
http://www.people.com.cn/rss/politics.xml

点击进去可以查看如下的xml结构

item 是新闻的主体。这部分是我们需要解析的地方。在实验当中,构建一个类标记和他一样的即可。这个类用于显示的数据 类。 编写的时候,我们可以快速实验阅读这个库 的一些方法,GdataxML 后来的版本支持xpath 的写法。类似搜索方式读取节点。

下面进行编程一下

#import <Foundation/Foundation.h>

@interface NewsItem : NSObject

@property (nonatomic,strong) NSString *title; //标题
@property (nonatomic,strong) NSString *news_id; //新闻ID
@property (nonatomic,strong) NSString *link;//链接
@property (nonatomic,strong) NSString *guid;//
@property (nonatomic,strong) NSString *pubDate;//发布日期

@end
#import "ViewController.h"
#import "GdataxMLNode.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSString *url = @"http://www.people.com.cn/RSS/politics.xml";

    NSError *error = nil;
    NSString *xmlStr = [NSString stringWithContentsOfURL:[NSURL URLWithString:url] encoding:NSUTF8StringEncoding error:&error];
    GdataxMLDocument *doc  = [[GdataxMLDocument alloc]initWithXMLString:xmlStr error:&error];

    NSArray *array =  [doc nodesForXPath:@"//item" error:&error];//注:采用路径的写法,也可以channel/item
    for (GdataxMLElement *item in array)
    {
          NSLog(@"%@",[[item elementsForName:@"title"][0] stringValue]);
    }    
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

这样子就可以读取到数据了。奇怪是elementsForName 还要返回数组,有点不理解这个类设计为什么不能直接读取到数据,非要这样子才能凑合使用。

输出结果日志查看调试结果

猜你在找的XML相关文章