XML解析类NSXMLParser

前端之家收集整理的这篇文章主要介绍了XML解析类NSXMLParser前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

首先,NSXMLParser必须继续NSXMLParserDelegate协议

@interface XMLHelper : NSObject <NSXMLParserDelegate>

首先设置XML数据,并初始化NSXMLParser

- (void)viewDidLoad {

NSString *strPathXml = [[NSBundle mainBundle] pathForResource:@"images" ofType:@"xml"];

NSData *xmlData = [[NSData alloc] initWithContentsOfFile:strPathXml];

NSXMLParser *parserXML = [[NSXMLParser alloc] initWithData:xmlData];

[parser setShouldProcessNamespaces:NO];

[parser setShouldReportNamespacePrefixes:NO];

[parser setShouldResolveExternalEntities:NO];


[parser setDelegate:self];

[parser parse];

[super viewDidLoad];

}

//遍例xml的节点

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict

{

NSLog(@"Name:%@",elementName);

}

//当xml节点有值时,则进入此句

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

{

NSLog(@"Value:%@",string);

}

//当遇到结束标记时,进入此句

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

{


}


代码示例

  1 //
  2 //  YYViewController.m
  3   01-文顶顶客户端
  4   5   Created by apple on 14-6-29.
  6   Copyright (c) 2014年 itcase. All rights reserved.
  7 //
  8 
  9 #import "YYViewController.h"
 10 MBProgressHUD+MJ.h 11 YYviodesModel.h 12 YYCell.h 13 #import <MediaPlayer/MediaPlayer.h>
 14 YYMoviePlayerViewController.h 15 
 16 @interface YYViewController ()<NSXMLParserDelegate>
 17 @property(nonatomic,strong)NSArray *videos;
 18 
 19 @end
 20 
 21 @implementation YYViewController
 22 
 23 - (void)viewDidLoad
 24 {
 25     [super viewDidLoad];
 26     去掉下划线
 27     self.tableView.separatorStyle=UITableViewCellSeparatorStyleNone;
 28     
 29     [MBProgressHUD showMessage:@"正在努力加载中"];
 30     
 31     创建路径
 32 
 33     NSString  *urlStr=http://192.168.1.53:8080/MJServer/video?type=XML";  34     NSURL *url=[NSURL URLWithString:urlStr];
 35     
 36     创建请求
 37     NSMutableURLRequest  *request=[NSMutableURLRequest requestWithURL:url];默认为get请求
 38     设置最大的网络等待时间
 39     request.timeoutInterval=20.0;
 40     
 41     获取主队列
 42     NSOperationQueue *queue=[NSOperationQueue mainQueue];
 43     发起请求
 44    [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response,NSData *data,NSError *connectionError) {
 45        隐藏HUD
 46         [MBProgressHUD hideHUD];
 47        if (data) {如果请求成功,拿到服务器返回的数据
 48            [self parseXMLData:data];
 49            
 50 //           解析拿到的数据(JSON方式)
 51            NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
 52 ////           NSArray *array=dict[@"video"];
 53            NSArray *array=dict[@"videos"];
 54 //           
 55            NSMutableArray *videos=[NSMutableArray array];
 56            for (NSDictionary *dict in array) {
 57                YYviodesModel *model=[YYviodesModel viodesModelWithDict:dict];
 58                [videos addObject:model];
 59            }
 60            self.videos=videos;
 61            
 62            刷新表格
 63            [self.tableView reloadData];
 64            
 65        }else如果请求失败,没有拿到数据
 66        {
 67            [MBProgressHUD showError:网络繁忙,等稍后再试! 68        }
 69    }];
 70 }
 71 
 72 /**
 73  *  解析XML数据
 74  */
 75 -(void)parseXMLData:(NSData *)data
 76 {
 77     1.创建解析器
 78     NSXMLParser *parser=[[NSXMLParser alloc]initWithData:data];
 79     2.设置代理
 80     parser.delegate=self;
 81     
 82     3.开始解析
 83     [parser parse];
 84 }
 85 
 86 #pragma mark-NSXMLParserDelegate
 87  88  *开始解析文档时调用
 89   90 -(void)parserDidStartDocument:(NSXMLParser *)parser
 91 {
 92     NSLog(开始解析文档");
 93 }
 94  95  *结束解析文档时调用(解析完毕)
 96   97 -(void)parserDidEndDocument:(NSXMLParser *)parser
 98 {
 99     NSLog(结束解析文档100 }
101 102  *解析到一个元素的开头时调用
103  104 -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
105 {
106     NSLog(解析到一个元素的开头---%@",elementName);
107 }
108 109  *解析到一个元素的结尾时调用
110  111 -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
112 {
113     NSLog(解析到一个元素的结尾---%@114 }
115 #pragma mark-数据源方法
116 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
117 {
118     return 1;
119 }
120 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
121 {
122     return self.videos.count;
123 }
124 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
125 {
126     YYCell *cell=[YYCell cellWithTableView:tableView];
127     获取数据模型
128     cell.model=self.videos[indexPath.row];
129     return cell;
130 }
131 
132 设置cell的行高
133 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
134 {
135     70;
136 }
137 
138 播放视频
139 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
140 {
141     取出数据模型
142     YYviodesModel *model=self.videos[indexPath.row];
143     
144     创建视屏播放器
145     MPMoviePlayerController 可以随意控制播放器的尺寸
146     MPMoviePlayerViewController只能全屏播放
147     
148         NSString *url = [NSString stringWithFormat:http://192.168.1.53:8080/MJServer/%@149     NSURL *videoUrl=[NSURL URLWithString:url];
150     YYMoviePlayerViewController *movieVc=[[YYMoviePlayerViewController alloc]initWithContentURL:videoUrl];
151     弹出播放器
152     [self presentMoviePlayerViewControllerAnimated:movieVc];
153     UIApplicationDidEnterBackgroundNotification
154 }
155 
156 
157 @end

打印查看

猜你在找的XML相关文章