//
// 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解析工具的更多相关文章

  1. Java XML解析工具 dom4j介绍及使用实例

    Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...

  2. Hpple -- 一个 HTML 解析工具

    在开发中,大部分会使用 JSON 进行数据解析,偶尔会用到 HTML. 使用 Objective-C 解析 HTML 或者 XML,系统自带有两种方式一个是通过 libxml,一个是通过 NSXMLP ...

  3. xml解析工具-jdom

    前言:近期接触SSH框架的时候,经常得配置一下xml文件:今天闲来没事就挖挖xml解析的原理供大伙儿分享.本文主要通过一个简单的例子解析一个xml文件.明白其中缘由之后,大家想定义自己的xml也绝非难 ...

  4. Java -- XML解析工具dom4j

    前言 XML现已成为一种通用的数据交流方式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便,对于XML的解析有四种方式:DOM生成和解析XML文档,SAX生成和解析XML文件 ...

  5. XML解析工具类

    public class XmlUtil { /* * 利用dom4j解析xml文件内容,并返回map数据形式 * path是.xml文件所在的路径 */ public static Map<S ...

  6. [转]xml解析工具的效率比较QDomDocument、TinyXml-2、RapidXml、PugiXml

    转自:http://www.itdaan.com/blog/2017/02/20/301ad47832f4.html 由于windows环境下测试不稳定,博主选择在linux下进行的测试! Qt - ...

  7. xml解析工具mashaller javaee自带解析类

    1.怎样去掉Marshaller的格式化? : JAXBContext context = JAXBContext.newInstance(Entity.class); Marshaller mars ...

  8. java自带的xml解析工具类

    public class JaxbUtil { /** * java对象转换为xml文件 * * @param xmlPath xml文件路径 * @param load java对象.Class * ...

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

    前言:本篇随笔介绍的是XML解析. 正文: 1.XML解析方式有2两种: DOM:一次性将整个XML数据加载进内存进行解析,比较适合解析小文件 SAX:从根元素开始,按顺序一个元素一个元素往下解析,比 ...

随机推荐

  1. 安全验证之使用摘要认证(digest authentication)

    安全验证之使用摘要认证(digest authentication) 在前一篇文章中,主要讨论了使用HTTP基本认证的方法,因为HTTP基本认证的方式决定了它在安全性方面存在很大的问题,所以接下来看看 ...

  2. Debian下的'aptitude update'失败处理

    Hit http://ftp.us.debian.org squeeze/contrib amd64 Packages Hit http://download.proxmox.com squeeze/ ...

  3. [.net] c# webservice

    采用的工具VS2010生成工程 1. 生成webservice工程:建 ASP.NET 空WEB 应用程序. 2. 在建好的ASP.NET 空WEB应用程序中新建项“web 服务”. 完成上述内容工程 ...

  4. sublime text3 3103 激活码

    —– BEGIN LICENSE —–Michael BarnesSingle User LicenseEA7E-8213858A353C41 872A0D5C DF9B2950 AFF6F667C4 ...

  5. 网络叠加模式VLAN、VxLAN、GRE

    什么是叠加网络 1.一个数据包(或帧)封装在另一个数据包内;被封装的包转发到隧道端点后再被拆装. 2.叠加网络就是使用这种所谓"包内之包"的技术安全地将一个网络隐藏在另一个 网络中 ...

  6. 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 ...

  7. Linux环境快速搭建RocketMQ双Master模式

    RocketMQ的集群部署方式有多种,其中包括单个Master.多个Master.多Master多Slave模式(异步复制)以及多Master多Slave模式(同步双写).本次以多Master集群模式 ...

  8. linux 安装 Chrome

    一.添加PPA 从Google Linux Repository(http://www.google.com/linuxrepositories/)下载安装Key,或把下面的代码复制进终端,回车,需要 ...

  9. 关于 CentOS 自启动(服务、脚本)

    /etc/init.d /etc/rc.local 其实是软连接,所以,实际上看 /etc/rc.d/ 这个文件夹就好了 rc.local 是自启动脚本 正常情况下,用户自定义的服务在 init.d ...

  10. MIPS指令集

    MIPS 指令集(共31条) 助记符 指令格式 示例 示例含义 操作及其解释 Bit # 31..26 25..21 20..16 15..11 10..6 5..0 R-type op rs rt ...