NSXMLParser解析XML数据
2015-11-19 08:54
363 查看
Cpp代码
NSXMLParser解析XML数据 用法如下:
一、首先,必须继承NSXMLParserDelegate协议
@interface ViewController : UIViewController<NSXMLParserDelegate>
二、设置XML数据,并初始化NSXMLParser:
1、从本地XML文件中读取数据
NSString *strPathXml = [[NSBundle mainBundle] pathForResource:@"group" ofType:@"xml"];
NSData *xmlData = [[NSData alloc] initWithContentsOfFile:strPathXml];
NSXMLParser *parserXML = [[NSXMLParser alloc] initWithData:xmlData];
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
[parser setDelegate:self];
[parser parse];
[parser release];
2、从接口Java Servlet中获取数据
NSString *nstrYwKPIUrl = [[NSString alloc]initWithFormat:@"%@?citys=%@&startTime=%@&endTime=%@&indexNames=%@",YWKPIURL,city,startTime,endTime,zbz];
//Servlet访问地址与传递参数
NSString *encodedURL = [nstrYwKPIUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//对Servlet访问地址进行编码
NSLog(@"encodedURL is %@",encodedURL);
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:encodedURL ]];
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
parser.delegate = self;
[parser parse];
[parser release];
三、解析XML数据
1、遍例xml的节点,执行以下代理方法
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
xmlelement = [[NSString alloc]initWithString:elementName];
//xmlelement为XML元素节点(xmlelement为字符串变量,是在.h文件中定义的。)
}
2、当xml节点有值时,则执行以下代理方法
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if ([xmlelement isEqualToString:@"START_TIME"]) {
[ywKPI.times addObject:[string substringToIndex:10]];
}
//START_TIME XML文件内容节点,ywKPI.times 数组对象,string xml文件START_TIME 节点值。 以下类似。
if ([xmlelement isEqualToString:@"REGION_USERLABEL"]) {
[ywKPI.citys addObject:string];
}
if ([xmlelement isEqualToString:@"BHTIME_CS"]) {
[ywKPI.dlymss addObject:string];
}
if ([xmlelement isEqualToString:@"BHTIME_PS"]) {
[ywKPI.fzymss addObject:string];
}
if ([xmlelement isEqualToString:@"GSM_NET_RATE"]) {
NSString *gsmwljtl =[[NSString alloc]initWithFormat: @"%@%@",[NSString stringWithFormat:@"%.2f",[string floatValue]],@"%"];
[ywKPI.gsmwljtls addObject:gsmwljtl];
}
}
3、当遇到XML节点结束标记时,执行以下代理方法
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
xmlelement = nil;
//xmlelement为字符串变量,是在.h文件中定义的。
}
NSXMLParser解析XML数据 用法如下:
一、首先,必须继承NSXMLParserDelegate协议
@interface ViewController : UIViewController<NSXMLParserDelegate>
二、设置XML数据,并初始化NSXMLParser:
1、从本地XML文件中读取数据
NSString *strPathXml = [[NSBundle mainBundle] pathForResource:@"group" ofType:@"xml"];
NSData *xmlData = [[NSData alloc] initWithContentsOfFile:strPathXml];
NSXMLParser *parserXML = [[NSXMLParser alloc] initWithData:xmlData];
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
[parser setDelegate:self];
[parser parse];
[parser release];
2、从接口Java Servlet中获取数据
NSString *nstrYwKPIUrl = [[NSString alloc]initWithFormat:@"%@?citys=%@&startTime=%@&endTime=%@&indexNames=%@",YWKPIURL,city,startTime,endTime,zbz];
//Servlet访问地址与传递参数
NSString *encodedURL = [nstrYwKPIUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//对Servlet访问地址进行编码
NSLog(@"encodedURL is %@",encodedURL);
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:encodedURL ]];
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
parser.delegate = self;
[parser parse];
[parser release];
三、解析XML数据
1、遍例xml的节点,执行以下代理方法
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
xmlelement = [[NSString alloc]initWithString:elementName];
//xmlelement为XML元素节点(xmlelement为字符串变量,是在.h文件中定义的。)
}
2、当xml节点有值时,则执行以下代理方法
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if ([xmlelement isEqualToString:@"START_TIME"]) {
[ywKPI.times addObject:[string substringToIndex:10]];
}
//START_TIME XML文件内容节点,ywKPI.times 数组对象,string xml文件START_TIME 节点值。 以下类似。
if ([xmlelement isEqualToString:@"REGION_USERLABEL"]) {
[ywKPI.citys addObject:string];
}
if ([xmlelement isEqualToString:@"BHTIME_CS"]) {
[ywKPI.dlymss addObject:string];
}
if ([xmlelement isEqualToString:@"BHTIME_PS"]) {
[ywKPI.fzymss addObject:string];
}
if ([xmlelement isEqualToString:@"GSM_NET_RATE"]) {
NSString *gsmwljtl =[[NSString alloc]initWithFormat: @"%@%@",[NSString stringWithFormat:@"%.2f",[string floatValue]],@"%"];
[ywKPI.gsmwljtls addObject:gsmwljtl];
}
}
3、当遇到XML节点结束标记时,执行以下代理方法
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
xmlelement = nil;
//xmlelement为字符串变量,是在.h文件中定义的。
}
相关文章推荐
- HTTP403(禁止访问)---WampServer 127.0.0.1 禁止访问
- webview 调用js 4.2之前与之后的区别
- windows下apache+php+mysql 环境配置方法
- object references an unsaved transient instance
- hdu 2199 Can you solve this equation?
- 迅速掌握Java容器中常用的ArrayList类与Vector类用法
- 在Win7中查看端口被占用的进程
- 虚拟机Ubuntu下Hadoop2.6.1的安装和配置(伪分布式)
- php中的魔术常量__FILE__
- 开源项目开发者的动机是什么?
- 容量规划和Region配置
- Feng是LSCUBE维护的开源流媒体服务器,兼容IETF标准,实现了RTSP、RTP/RTCP
- 06_UIScrollView
- OC之实例变量可见度
- 根据Ip地址与掩码 得出 子网地址与广播地址
- iOS 屏幕适配--autoResizing autoLayout和sizeClass图文详解
- DataTable to excel
- 如何将win10回收站固定到桌面快速访问
- C#中out和ref之间的区别
- SqlServer中把结果集放到到临时表的方法