// parser
xml
解析xml需要NSXMLParserDelegate 协议,然后再实现类中完成重写parser等方法
NSAutoreleasePool
这个一定要有,不然会报错
一定要记得,在分析XML的时候,xml格式是如下的话,是从item开始读取,而不是aaa表节点,不然只读取依次循环就没有了。
<item>
<aaa>
<tt> fsdfs</tt>
<bb>fsdlkfjkls</bb>
</aaa>
<aaa>
<tt> fdsfds</tt>
<bb>fwefwwe</bb>
</aaa>
</item>
//interface
#import
<Foundation/Foundation.h>
@interface
IVPaserXMLSingleton :
NSObject<NSXMLParserDelegate
> {
NSMutableString
*currentString
;
NSString
*currentElement
;
}
@property
(nonatomic
,retain
)NSMutableString
*currentString;
@property
(nonatomic
,retain
)NSString
*currentElement;
-(void
)getData:(NSString
*)urlStr;
@end
//implements
class
#import
"IVPaserXMLSingleton.h"
#import
"UserInfo.h"
@implementation
IVPaserXMLSingleton
@synthesize
currentString,currentElement;
-(void
)getData:(NSString
*)urlStr
{
[NSThread
detachNewThreadSelector
:@selector
(parserData
:) toTarget
:self
withObject
:[NSURL
URLWithString
:urlStr]];
}
-(void
)parserData:(NSURL
*)url
{
NSAutoreleasePool
*pool=[[NSAutoreleasePool
alloc
]
init
];
NSXMLParser
*parser=[[NSXMLParser
alloc
]
initWithContentsOfURL
:url];
[parser
setDelegate
:self
];
[parser
setShouldProcessNamespaces
:YES
];
[parser
setShouldReportNamespacePrefixes
:YES
];
[parser
setShouldResolveExternalEntities
:NO
];
[parser
parse
];
[pool
drain
];
}
//start
element
- (void
)parser:(NSXMLParser
*)parser didStartElement:(NSString
*)elementName
namespaceURI:(NSString
*)namespaceURI qualifiedName:(NSString
*)qName
attributes:(NSDictionary
*)attributeDict
{
[currentElement
release
];
currentElement
=[elementName
copy
];
//NSLog(qName);
//NSLog(@"I Jus
found
a start tag for
%@",elementName);
if
([currentElement
isEqualToString
:@"item"
])
{
//NSLog(@"begin");
//[self
performSelectorOnMainThread:@selector(create) withObject:nil
waitUntilDone:YES];
}
else
if
([currentElement
isEqualToString
:@"UserInfo"
])
{
self
.currentString
=[NSMutableString
string
];
}
}
//found
character
-(void
)parser:(NSXMLParser
*)parser foundCharacters:(NSString
*)string
{
if
([currentElement
isEqualToString
:@"Id"
]){
//
[currentString
appendString:string];
// [currentString
appendString:@"
"];
}
else
if
([currentElement
isEqualToString
:@"UserId"
]) {
// [currentString
appendString:string];
// [currentString
appendString:@"
"];
}
else
if
([currentElement
isEqualToString
:@"Name"
]) {
[currentString
appendString
:string];
// [currentString
appendString:@"
"];
}
else
if
([currentElement
isEqualToString
:@"Sex"
])
{
// [currentString
appendString:string];
// [currentString
appendString:@"
"];
}
else
if
([currentElement
isEqualToString
:@"Age"
])
{
//[currentString
appendString:string];
//[currentString
appendString:@"
"];
}
}
//parser
over
-(void
)parserDidEndDocument:(NSXMLParser
*)parser
{
NSLog
(@"Document
finished!!!"
);
}
//end element
-(void
)parser:(NSXMLParser
*)parser didEndElement:(NSString
*)elementName
namespaceURI:(NSString
*)namespaceURI qualifiedName:(NSString
*)qName
{
if([elementName
isEqualToStr
ing:@"Id"
])
{
//
NSLog(curr
entString);
}
else if ([
currentElement isEqualToString
:@"UserId"])
{
//
NSLog(current
String);
}
else if
([currentElement isEqualToStri
ng:@"Name
"])
{
//
NSLog(cur
rentString);
}
else if
([currentElement
isEqualToStri
ng:@"Sex"
])
{
//
NSLog(cur
rentString);
}
else if
([currentElem
ent
isEqualTo
String:@"Age"])
{
NSL
og(currentString)
;
}
}
@end
分享到:
相关推荐
使用NSXMLParser解析XML数据的一个Demo
ios xml解析 NSXMLParser。 NSXMLParser是基于SAX的解析方式。NSXMLParser采用了委托设计模式,因此他的实现类需要采用协议并支持委托。NSXMLParser解析XML需要委托NSXMLParserDelegate实现。
NULL 博文链接:https://eric-gao.iteye.com/blog/1590902
代码例子(关于NSXMLParser 解析xml文件) xml 文件 通过NSXMLParser 解析成为数组 元素内容与属性可以获取到
xml解析的两种常用方式, DOM解析:一次性将整个XML文档加载进内存,比较适合解析小文件,例如:GDataXml解析 SAX解析:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件,例如:NSXMLParser解析
Reachability 2.0版本,确认网络环境3G/WIFI 使用NSConnection下载数据 使用NSXMLParser解析xml文件
xmlparsing-with-nsxmlparser-tutorial 你可以找到的NSXMLParser完整XMLParsing -教程这里 。 本教程由最好的The App Guruz提供。
通过SOAP 网络请求数据,并使用NSXMLParser解析Xml
SHXMLParser 是一个基于 NSXMLParser 构建的易用的 XML 解析器,可转换 XML 数据到 Objective-C 对象。 标签:SHXMLParser
在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML、TouchXML、KissXML、TinyXML和GDataXML。问题是应该选择哪一个呢? 解析 XML 通常有两...
本程序演示了如何连接浏览器,如何获取数据并解析xml文件。
前言:本篇随笔介绍的是XML解析。 正文: 1、XML解析方式有2两种: DOM:一次性将整个XML数据加载进内存进行解析,比较适合解析小文件SAX:从根元素开始,按顺序... 2-3、本人基于苹果原生NSXMLParser封装好的XML解析
用于NSXMLParser的ReactiveCocoa扩展:一种简洁的,基于流的API,用于使用NSXMLParser解析XML。 围绕定义包装器,从而不再需要实现繁琐的委托方法。 应用所需的任何ReactiveCocoa魔术(请参阅 ): # import " ...
主要介绍了使用Swift实现iOS App中解析XML格式数据的教程,讲到了iOS中提供的NSXMLParser和NSXMLParserDelegate两个API的用法,需要的朋友可以参考下
xml转字典,采用系统NSXMLParser解析,轻轻松松一句代码完成xml转换字典操作
使用iphoneSDK官方NSXMLParserDelegate做的简单xml解析,附带详细注释以及使用到的方法的详细解释,灰常适合新手,高手请留下你们的改进意见。
在Swift中实现的简单XML解析器这是什么? 这是一个受SwiftyJSON和SWXMLHash启发的XML解析器。 Foundation框架中的NSXMLParser是一种“ SAX”解析器。 它具有足够的性能,但是在Swift中实现了一点inc Simple XML ...
NSXMLParser *xmlRead = [[NSXMLParser alloc] initWithData:xmlData]; [xmlRead setDelegate:self]; [xmlRead parse]; [xmlRead release]; //get dataTemplate for (int i=0;i<[objects count]; i++) { ...
一个使用ios自带的NSXMLParser的demo,课供新手参考学习
概述基于Swift的RSS阅读器,可将rss feed作为xml从远程服务器加载,并使用NSXMLParser对其进行解析。 解析完成后,它将数据加载到UITableView即显示标题和日期。 当单击标题时,它将转到详细信息页面,在该页面中,...