首先,如果要解析xml文件,要实现NSXMLParserDelegate协议
noteXml.h文件
#import <Foundation/Foundation.h>
@class NotePad;
@class NoteDb;
@interface NoteXml : NSObject<NSXMLParserDelegate>{
NoteDb *noteDb;
NotePad *newNote;
//文本节点的内容
NSMutableString *temString;
//判断xml是否解析完成
BOOL isXml;
}
@property(nonatomic,assign)BOOL isXml;
@property(nonatomic,retain) NoteDb *noteDb;
@property(nonatomic,retain) NotePad *newNote;
@property(nonatomic,retain) NSMutableString *temString;
-(void)parserNote:(NSData*)_data;
@end
noteXml.m文件
#import "NoteXml.h"
#import "NoteDb.h"
#import "NotePad.h"
@implementation NoteXml
@synthesize noteDb,newNote,temString,isXml;
- (id)init {
self = [super init];
if (!self) {
[self release];
return nil;
}
isXml=NO;
noteDb=[[NoteDb alloc]init];
newNote=[[NotePad alloc]init];
temString=[[NSMutableString alloc]init];
return self;
}
-(void)parserNote:(NSData*)_data{
//NSXMLParser 实现的是sax方法解析xml文件。
//设置xml数据,通过NSData创建解析器,还可以通过NSURL创建解析器
NSXMLParser *parser=[[NSXMLParser alloc]initWithData:_data];
//回调,代理,委托
parser.delegate=self;
//运行解析器
[parser parse];
}
//文档开始时处理函数
-(void)parserDidStartDocument:(NSXMLParser *)parser{
[noteDb removeAllNotes];
[temString setString:@""];
}
//发现元素开始符的处理函数 (即报告元素的开始以及元素的属性)
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
if ([elementName isEqualToString:@"Note"]) {
self.newNote=nil;
self.newNote=[[[NotePad alloc]init]autorelease];
}
[temString setString:@""];
}
//处理标签包含内容字符 (报告元素的所有或部分内容)
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if (![string isEqualToString:@""]) {
[temString appendString:string];
}
}
//发现元素结束符的处理函数,保存元素各项目数据(即报告元素的结束标记)
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"Note"]) {
[self.noteDb addNote:newNote];
}else if([elementName isEqualToString:@"theme"]){
newNote.theme=[NSMutableString stringWithString:self.temString];
}else if([elementName isEqualToString:@"information"]){
newNote.information=[NSMutableString stringWithString:self.temString];
}else if([elementName isEqualToString:@"date"]){
newNote.ndate=[NSMutableString stringWithString:self.temString];
}else if([elementName isEqualToString:@"priority"]){
NSInteger value=[self.temString integerValue];
newNote.priority=value;
}
}
//文档结束
-(void)parserDidEndDocument:(NSXMLParser *)parser{
NSLog(@"%@",self.noteDb);
self.isXml=YES;
}
- (void)dealloc {
[noteDb release];
[newNote release];
[temString release];
[super dealloc];
}
@end
ok!本博客是我自己的练习,有好多地方没有讲太清楚,还请谅解!
分享到:
相关推荐
使用NSXMLParser解析XML数据的一个Demo
代码例子(关于NSXMLParser 解析xml文件) xml 文件 通过NSXMLParser 解析成为数组 元素内容与属性可以获取到
ios xml解析 NSXMLParser。 NSXMLParser是基于SAX的解析方式。NSXMLParser采用了委托设计模式,因此他的实现类需要采用协议并支持委托。NSXMLParser解析XML需要委托NSXMLParserDelegate实现。
Reachability 2.0版本,确认网络环境3G/WIFI 使用NSConnection下载数据 使用NSXMLParser解析xml文件
NULL 博文链接:https://eric-gao.iteye.com/blog/1590902
本程序演示了如何连接浏览器,如何获取数据并解析xml文件。
xml解析的两种常用方式, DOM解析:一次性将整个XML文档加载进内存,比较适合解析小文件,例如:GDataXml解析 ...SAX解析:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件,例如:NSXMLParser解析
xmlparsing-with-nsxmlparser-tutorial 你可以找到的NSXMLParser完整XMLParsing -教程这里 。 本教程由最好的The App Guruz提供。
在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML、TouchXML、KissXML、TinyXML和GDataXML。问题是应该选择哪一个呢? 解析 XML 通常有两...
通过SOAP 网络请求数据,并使用NSXMLParser解析Xml
使用iphoneSDK官方NSXMLParserDelegate做的简单xml解析,附带详细注释以及使用到的方法的详细解释,灰常适合新手,高手请留下你们的改进意见。
SHXMLParser 是一个基于 NSXMLParser 构建的易用的 XML 解析器,可转换 XML 数据到 Objective-C 对象。 标签:SHXMLParser
主要介绍了使用Swift实现iOS App中解析XML格式数据的教程,讲到了iOS中提供的NSXMLParser和NSXMLParserDelegate两个API的用法,需要的朋友可以参考下
用于NSXMLParser的ReactiveCocoa扩展:一种简洁的,基于流的API,用于使用NSXMLParser解析XML。 围绕定义包装器,从而不再需要实现繁琐的委托方法。 应用所需的任何ReactiveCocoa魔术(请参阅 ): # import " ...
DOM:一次性将整个XML数据加载进内存进行解析,比较适合解析小文件SAX:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件 2、IOS中XML解析方案有很多种: 2-1、第三方框架: libxml2:纯C语言...
一个简单的小例子,通过一个xml文件去实现选择省市区。 关键是用了XML解析器的代理方法。具体相关代码如下: #pragma mark - xmlParseDelegateMethod -(void)parser:(NSXMLParser *)parser didStartElement:...
概述基于Swift的RSS阅读器,可将rss feed作为xml从远程服务器加载,并使用NSXMLParser对其进行解析。 解析完成后,它将数据加载到UITableView即显示标题和日期。 当单击标题时,它将转到详细信息页面,在该页面中,...
xml转字典,采用系统NSXMLParser解析,轻轻松松一句代码完成xml转换字典操作
NSXMLParser *xmlRead = [[NSXMLParser alloc] initWithData:xmlData]; [xmlRead setDelegate:self]; [xmlRead parse]; [xmlRead release]; //get dataTemplate for (int i=0;i<[objects count]; i++) { ...
在Swift中实现的简单XML解析器这是什么? 这是一个受SwiftyJSON和SWXMLHash启发的XML解析器。 Foundation框架中的NSXMLParser是一种“ SAX”解析器。 它具有足够的性能,但是在Swift中实现了一点inc Simple XML ...