NSXMLParser自定义的一个xml解析工具
//
// DenglXMLParser.h
// #import <Foundation/Foundation.h> @interface DenglXMLParser : NSXMLParser<NSXMLParserDelegate> @property (nonatomic,strong) NSMutableArray *array; @end
//
// DenglXMLParser.m
// #import "DenglXMLParser.h" @interface DenglXMLParser () @end @implementation DenglXMLParser #pragma mark - <NSXMLParserDelegate>
/**
* 解析到某个元素的结尾
*/
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
// NSLog(@"didEndElement - %@", elementName);
} /**
* 解析到某个元素的开头
*/
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
// NSLog(@"%@---%@",elementName,attributeDict);
if ([elementName isEqualToString:@"item"]) {
[self.array addObject:attributeDict];
}
} /**
* 开始解析XML文档
*/
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
// NSLog(@"parserDidStartDocument");
self.array = [NSMutableArray array];
} /**
* 解析完毕
*/
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
// NSLog(@"parserDidEndDocument");
} @end
还有一种xml解析的工具
如下是代码:
#import <Foundation/Foundation.h>
@interface XMLParser :NSXMLParser<NSXMLParserDelegate>{
//存放解析xml时所得到的标题、日期等项目
NSMutableDictionary *currentItem;
//存放解析xml时所得到的文本内容
NSMutableString *currentContents;
//存放解析内容
NSMutableArray *array;
}
@property (nonatomic,retain) NSMutableString *currentContents;
@property (nonatomic,retain) NSMutableArray *array;
@property (nonatomic,retain) NSMutableDictionary *currentItem;
@end
#import "XMLParser.h" @implementation XMLParser @synthesize array;
@synthesize currentItem;
@synthesize currentContents; /**
* 初始设置
*/
- (void)parserDidStartDocument:(NSXMLParser *)parser {
NSMutableArray *mytitleList = [[NSMutableArray alloc] initWithCapacity:];
self.array = mytitleList; } /**
* 准备读取
*/
- (void)parser:(NSXMLParser *)parser
didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict{ if([elementName compare:@"item"] == NSOrderedSame){
NSMutableDictionary *myCurrentItem = [[NSMutableDictionary alloc] initWithCapacity:];
self.currentItem = myCurrentItem; }else if(currentItem != NULL){
NSMutableString *myCurrentContents = [[NSMutableString alloc] initWithCapacity:];
self.currentContents = myCurrentContents;
}
} /**
* 读取内容
*/
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ if(self.currentContents && string)
[self.currentContents appendString:string];
} /**
* 完成读取
*/
- (void)parser:(NSXMLParser *)parser
didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName{
if([elementName compare:@"item"] == NSOrderedSame){
[self.array addObject:self.currentItem];
}else if(self.currentItem && self.currentContents){
[self.currentItem setObject:self.currentContents forKey:elementName];
self.currentContents = nil;
}
} @end
NSXMLParser自定义的一个xml解析工具的更多相关文章
- Java XML解析工具 dom4j介绍及使用实例
Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...
- Hpple -- 一个 HTML 解析工具
在开发中,大部分会使用 JSON 进行数据解析,偶尔会用到 HTML. 使用 Objective-C 解析 HTML 或者 XML,系统自带有两种方式一个是通过 libxml,一个是通过 NSXMLP ...
- xml解析工具-jdom
前言:近期接触SSH框架的时候,经常得配置一下xml文件:今天闲来没事就挖挖xml解析的原理供大伙儿分享.本文主要通过一个简单的例子解析一个xml文件.明白其中缘由之后,大家想定义自己的xml也绝非难 ...
- Java -- XML解析工具dom4j
前言 XML现已成为一种通用的数据交流方式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便,对于XML的解析有四种方式:DOM生成和解析XML文档,SAX生成和解析XML文件 ...
- XML解析工具类
public class XmlUtil { /* * 利用dom4j解析xml文件内容,并返回map数据形式 * path是.xml文件所在的路径 */ public static Map<S ...
- [转]xml解析工具的效率比较QDomDocument、TinyXml-2、RapidXml、PugiXml
转自:http://www.itdaan.com/blog/2017/02/20/301ad47832f4.html 由于windows环境下测试不稳定,博主选择在linux下进行的测试! Qt - ...
- xml解析工具mashaller javaee自带解析类
1.怎样去掉Marshaller的格式化? : JAXBContext context = JAXBContext.newInstance(Entity.class); Marshaller mars ...
- java自带的xml解析工具类
public class JaxbUtil { /** * java对象转换为xml文件 * * @param xmlPath xml文件路径 * @param load java对象.Class * ...
- iOS开发之网络数据解析(二)--XML解析简介
前言:本篇随笔介绍的是XML解析. 正文: 1.XML解析方式有2两种: DOM:一次性将整个XML数据加载进内存进行解析,比较适合解析小文件 SAX:从根元素开始,按顺序一个元素一个元素往下解析,比 ...
随机推荐
- 安全验证之使用摘要认证(digest authentication)
安全验证之使用摘要认证(digest authentication) 在前一篇文章中,主要讨论了使用HTTP基本认证的方法,因为HTTP基本认证的方式决定了它在安全性方面存在很大的问题,所以接下来看看 ...
- Debian下的'aptitude update'失败处理
Hit http://ftp.us.debian.org squeeze/contrib amd64 Packages Hit http://download.proxmox.com squeeze/ ...
- [.net] c# webservice
采用的工具VS2010生成工程 1. 生成webservice工程:建 ASP.NET 空WEB 应用程序. 2. 在建好的ASP.NET 空WEB应用程序中新建项“web 服务”. 完成上述内容工程 ...
- sublime text3 3103 激活码
—– BEGIN LICENSE —–Michael BarnesSingle User LicenseEA7E-8213858A353C41 872A0D5C DF9B2950 AFF6F667C4 ...
- 网络叠加模式VLAN、VxLAN、GRE
什么是叠加网络 1.一个数据包(或帧)封装在另一个数据包内;被封装的包转发到隧道端点后再被拆装. 2.叠加网络就是使用这种所谓"包内之包"的技术安全地将一个网络隐藏在另一个 网络中 ...
- java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init>()V from 解决
在用spark的yarn-cluster模式跑fpgrowth进行频繁项集挖掘的时候,报如下错误: ERROR yarn.ApplicationMaster: User class threw exc ...
- Linux环境快速搭建RocketMQ双Master模式
RocketMQ的集群部署方式有多种,其中包括单个Master.多个Master.多Master多Slave模式(异步复制)以及多Master多Slave模式(同步双写).本次以多Master集群模式 ...
- linux 安装 Chrome
一.添加PPA 从Google Linux Repository(http://www.google.com/linuxrepositories/)下载安装Key,或把下面的代码复制进终端,回车,需要 ...
- 关于 CentOS 自启动(服务、脚本)
/etc/init.d /etc/rc.local 其实是软连接,所以,实际上看 /etc/rc.d/ 这个文件夹就好了 rc.local 是自启动脚本 正常情况下,用户自定义的服务在 init.d ...
- MIPS指令集
MIPS 指令集(共31条) 助记符 指令格式 示例 示例含义 操作及其解释 Bit # 31..26 25..21 20..16 15..11 10..6 5..0 R-type op rs rt ...