IOS XML解析学习

XML文件:

<?xml version="1.0" encoding="UTF-8"?>

<Notes>

<Note id="1">

<CDate>2013-6-11</CDate>

<Content>ksdjfaljdfasf</Content>

<UserID>ALEX</UserID>

</Note>

<Note id="2">

<CDate>2012-6-11</CDate>

<Content>VVVVVVVVVVV</Content>

<UserID>ALEX11</UserID>

</Note>

</Notes>

//

//  NotesXMLParser.h

//  XML

//

//  Created by Alex on 13-6-12.

//  Copyright (c) 2013年 Alex. All rights reserved.

//

#import <Foundation/Foundation.h>

@interface NotesXMLParser
: NSObject<NSXMLParserDelegate>

@property (nonatomic,strong) NSMutableArray *notes;

@property (nonatomic, strong) NSString *currentTagName;

-(void)start;

@end

//

//  NotesXMLParser.m

//  XML

//

//  Created by Alex on 13-6-12.

//  Copyright (c) 2013年 Alex. All rights reserved.

//

#import "NotesXMLParser.h"

@implementation NotesXMLParser

-(void)start

{

NSString* path =
[[NSBundle mainBundle] pathForResource:@"notes" ofType:@"xml"];

NSURL *url =
[NSURL fileURLWithPath:path];

//开始解析XML

NSXMLParser *parser =
[[NSXMLParser alloc] initWithContentsOfURL:url];

parser.delegate = self;

[parser parse];

NSLog(@"解析完成...");

}

//文档开始的时候触发

- (void)parserDidStartDocument:(NSXMLParser *)parser

{

_notes =
[NSMutableArray new];

}

//文档出错的时候触发

- (void)parser:(NSXMLParser *)parser
parseErrorOccurred:(NSError *)parseError

{

NSLog(@"%@",parseError);

}

//遇到一个开始标签时候触发

- (void)parser:(NSXMLParser *)parser
didStartElement:(NSString *)elementName

namespaceURI:(NSString *)namespaceURI

qualifiedName:(NSString *)qualifiedName

attributes:(NSDictionary *)attributeDict

{

_currentTagName = elementName;

if ([_currentTagName isEqualToString:@"Note"])
{

NSString *_id =
[attributeDict objectForKey:@"id"];

NSMutableDictionary *dict =
[NSMutableDictionary new];

[dict setObject:_id forKey:@"id"];

[_notes addObject:dict];

}

}

//遇到字符串时候触发

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

{

string
=[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; //替换回车符和空格

if
([string isEqualToString:@""]) {

return;

}

NSMutableDictionary *dict =
[_notes lastObject];

if
([_currentTagName isEqualToString:@"CDate"]
&& dict) {

[dict setObject:string forKey:@"CDate"];

}

if
([_currentTagName isEqualToString:@"Content"]
&& dict) {

[dict setObject:string forKey:@"Content"];

}

if
([_currentTagName isEqualToString:@"UserID"]
&& dict) {

[dict setObject:string forKey:@"UserID"];

}

}

//遇到结束标签时候出发

- (void)parser:(NSXMLParser *)parser
didEndElement:(NSString *)elementName

namespaceURI:(NSString *)namespaceURI

qualifiedName:(NSString *)qName;

{

self.currentTagName = nil;

}

//遇到文档结束时候触发

- (void)parserDidEndDocument:(NSXMLParser *)parser

{

[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadViewNotification" object:self.notes userInfo:nil];

self.notes = nil;

}

@end

#import "ViewController.h"

#import "NotesXMLParser.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad

{

[super viewDidLoad];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadView:) name:@"reloadViewNotification" object:nil];

NotesXMLParser *parser=[NotesXMLParser new];

[parser start];

}

//本文转载http://www.dahuangphone.com/dv_rss.asp?s=xhtml&boardid=8&id=133&page=3

时间: 2024-09-28 19:43:06

IOS XML解析学习的相关文章

iOS xml解析

iOS xml 解析方法有两种:SAX , DOM. SAX 不用借助第三方,在解析过程中逐行解析.(NSXMLParser,需要实现代理),具体步骤: 1.获取文件路径. 2.创建 NSXMLParser 对象. 3.遵守协议,设置代理. 4.实现代理方法 1>- (void)parserDidStartDocument:  ---- 开始解析 2>- (void)parserDidEndDocument: ----解析结束 3>- (void)parser:didStartEleme

由XML解析学习工厂模式

代码段1: startupData = new StartupData(); /* 设定自定义的MyHandler给XMLReader */ StartupXMLHandler startupDataXMLHandler = new StartupXMLHandler(); startupDataXMLHandler.setData(startupData); /* 产生SAXParser对象 */            SAXParserFactory spf = SAXParserFacto

Android] Android XML解析学习——方式比较

[Android] Android XML解析学习——方式比较 (ZT) 分类: 嵌入式 (From:http://blog.csdn.net/ichliebephone/article/details/5981913) 一.基础知识 经过这段时间的学习,我们已经了解了Android平台上用于解析XML的三种方式:SAX.DOM和Pull.并且在学习的过程中也介绍了这三种方式各自的特点及适合的使用场合,简单的来说,DOM方式最直观和容易理解,但是只适合XML文档较小的时候使用,而SAX方式更适合

iOS XML解析使用-韩国庆

欢迎-------(北京-iOS移动开发金牌教师QQ:2592675215)韩老师给你带来XML解析课程 今天给大家讲解下xml解析的第三方简单用法:首先我解释下,json和xml解析格式. JSON格式,轻量级解析,一般都是字典套数组,或者数组套字典.非常简单. XML格式,一般都是节点形式的存在如: <?xml version="1.0" ?> <students> <student name="aa" gender="男

IOS学习:常用第三方库(GDataXMLNode:xml解析库)

IOS学习:常用第三方库(GDataXMLNode:xml解析库) 分类: ios开发学习2013-05-30 09:45 4443人阅读 评论(0) 收藏 举报 iOSXMLGDataXMLNode 一.GDataXMLNode说明 GDataXMLNode是Google提供的用于XML数据处理的类集.该类集对libxml2--DOM处理方式进行了封装,能对较小或中等的xml文档进行读写操作且支持XPath语法. 使用方法: 1.获取GDataXMLNode.h/m文件,将GDataXMLNo

iOS -数据库网络之xml解析

XML文件有2种解析方式 1.基于文档(document) 2.基于事件(sax) 1.IOS中XML文件获取 首先要将XML导入工程中 在ViewController的按钮事件中,代码如下: //获取xml完整路径 NSString * path=[[NSBundle mainBundle] [email protected]"xml文件名称" ofType:@"xml"]; //读取文件到内存 NSData* data=[NSData dataWithConte

ios 自带xml 解析,TBXMLParser解析

今天看了下苹果xml 解析,写了个小demo 心想还是 在博客上写点东西吧,毕竟很久很久都没有上来了 先上个效果图把 接下来 看下 工程目录图吧 本demo 分两种解析模式,一是苹果自带的, 首先先看下苹果自带的吧,工程文件为 NoteXMLParser 文件 ,另一种解析模式 是 NotesTBXMLParser文件 NoteXMLParser.h 文件代码如下 : // // NoteXMLParser.h // TestXML // // Created by choni on 14-5-

iOS开发之网络数据解析(二)--XML解析简介

前言:本篇随笔介绍的是XML解析. 正文: 1.XML解析方式有2两种: DOM:一次性将整个XML数据加载进内存进行解析,比较适合解析小文件 SAX:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件 2.IOS中XML解析方案有很多种: 2-1.第三方框架: libxml2:纯C语言,默认包含在iOS SDK中,同时支持DOM和SAX解析 GDataXML:DOM方式解析,由Google开发,基于libxml2 2-2.苹果原生 NSXMLParser:SAX方式解析,使用简单

IOS中的XML解析

一.XML的解析方式有2种: DOM:一次性将整个XML文档加载进内存,比较适合解析小文件 SAX:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件 二.在IOS中,解析XML的手段有很多 1.苹果原生 NSXMLParser:SAX方式解析,使用简单. 2.第三方框架 libxml2:纯C语言,默认包含在iOS SDK中,同时支持DOM和SAX方式解析 GDataXML:DOM方式解析,由Google开发,基于libxml2 三.XML解析方式的选择建议 大文件:NSXMLPa