IOS解析XML文件
这里使用NSXMLParser来解析,这个是apple自带的xml解析库,有个參考文章:http://www.raywenderlich.com/553/xml-tutorial-for-ios-how-to-choose-the-best-xml-parser-for-your-iphone-project
在Xcode中增加一个xml文件:
<?
xml version="1.0" encoding="ISO-8859-1"?>
<root>
<Shop shoplocation="beijing">
<id>001</id>
<name>John</name>
<url>Reminder</url>
<info>Don't forget the meeting!</info>
</Shop>
<Shop shoplocation="dongcheng">
<id>002</id>
<name>Jack</name>
<url>cc</url>
<info>how are you!</info>
</Shop>
<Shop shoplocation="haidian">
<id>003</id>
<name>Tom</name>
<url>bb</url>
<info>I am fine!</info>
</Shop>
</root>
先读出来
NSString* path = [[NSBundle mainBundle] pathForResource:@"shop" ofType:@"xml"];
NSData *data = [[NSData alloc] initWithContentsOfFile:path options:(NSDataReadingMappedIfSafe) error:nil];
NSXMLParser *parser=[[NSXMLParser alloc] initWithData:tmpdata];
<span style="white-space:pre"> </span>[parser setDelegate:self];
[parser parse];
[parser release];
[self parseShopListFromResponse:data];
然后进行解析:
#pragma mark NSXMLParser delegate methods
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qName
attributes: (NSDictionary *)attributeDict {
self.currentTag = elementName;
if ([elementName isEqualToString:@"root"]) {
self.tmpList = [[NSMutableArray alloc] init];
}else if ([elementName isEqualToString:@"Shop"]) {
self.tmpShop = [[ShopData alloc] init];
NSArray* array = [attributeDict allKeys];
NSString* key = [array lastObject];
NSString*s = [attributeDict objectForKey:key];
self.tmpShop.info = s;
}
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if (self.currentString == nil) {
self.currentString = [[NSMutableString alloc] initWithString:@""];
}
if ([self.currentTag isEqualToString:@"name"] ||
[self.currentTag isEqualToString:@"id"] ||
[self.currentTag isEqualToString:@"url"] ||
[self.currentTag isEqualToString:@"info"]) {
[self.currentString appendString:string];
}
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([elementName isEqualToString:@"Shop"]) {
[self.tmpList addObject:self.tmpShop];
[self.tmpShop release];
} if ([elementName isEqualToString:@"name"]) {
self.tmpShop.name = [self.currentString copy];
[self.currentString setString:@""];
}else if ([elementName isEqualToString:@"id"]) {
self.tmpShop._id = [self.currentString copy];
[self.currentString setString:@""];
}else if ([elementName isEqualToString:@"url"]) {
self.tmpShop.url = [self.currentString copy];
[self.currentString setString:@""];
}else if ([elementName isEqualToString:@"info"]) {
// self.tmpShop.info = [self.currentString copy];
// [self.currentString setString:@""];
}
}
- (void)parserDidStartDocument:(NSXMLParser *)parser {
NSLog(@"開始解析xml文件");
}
- (void)parserDidEndDocument:(NSXMLParser *)parser {
[self.tableView reloadData];
NSLog(@"解析xml文件完毕");
}
Shopdata的结构是:
@property (nonatomic,retain) NSString *name;
@property (nonatomic,retain) NSString *url;
@property (nonatomic,retain) NSString *_id;
@property (nonatomic,retain) NSString *info;
@property (nonatomic, retain) UIImage *appIcon;
代码能够在http://download.csdn.net/detail/baidu_nod/7585037下载,无需积分
IOS解析XML文件的更多相关文章
- 在iOS 开发中用GDataXML(DOM方式)解析xml文件
因为GDataXML的内部实现是通过DOM方式解析的,而在iOS 开发中用DOM方式解析xml文件,这个时候我们需要开启DOM,因为ios 开发中是不会自动开启的,只有在mac 开发中才自动开启的.我 ...
- java解析XML文件
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源 ...
- IOS 解析XML文档
前段时间想找点事做,就是试着看能不能用豆瓣的API做点什么,于是就碰到了这个问题——XML解析. 老师还没讲,只能自己去查. XML文档解析主要有SAX和DOM两种模式,IOS上两种模式都可以用,这里 ...
- Java进阶(二十七)使用Dom4j解析XML文件
使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...
- Android 解析XML文件和生成XML文件
解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...
- JAVA使用SAX解析XML文件
在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...
- JAVA中使用DOM解析XML文件
XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- XML:使用DOM技术解析xML文件中的城市,实现select级联选择
中国的城市xml格式:cities.xml <?xml version="1.0" encoding="utf-8"?> <china> ...
随机推荐
- Java 学习笔记 反射与迭代器
反射 使用反射获得类 Class cls = Class.forName("全类名") //包括包名 Class cls = xx.Class;//xx代表类名 使用反射获得构造方 ...
- junit单元测试注意的问题
1.有返回值的方法不能直接测试 2.带参数的方法不能直接测试 3.访问权限在public一下的方法不能直接测试 4.static静态方法不能直接测试 5.不能给出现前四个条件中任意一个的方法添加@Te ...
- 列表 ul ol dl 和 块级标签和行及标签之间的转换
1. 无序列表 有序列表 自定义列表 1,无序列表 第一 你不必须有子标签 <li></li> 第二 ul天生自带内外边距 List-style的属性值 circle(空心圆 ...
- es6 语法 (解构赋值)
1.结构赋值 { let a,b,c; [a,b] = [1,2]; console.log(a,b); //1,2} { let a,b,rest; [a,b,...rest] = [1,2,3,4 ...
- Android 实现锚点定位
相信做前端的都做过页面锚点定位的功能,通过<a href="#head"> 去设置页面内锚点定位跳转. 本篇文章就使用tablayout.scrollview来实现an ...
- vue axios数据请求get、post方法的使用
我们常用的有get方法以及post方法,下面简单的介绍一下这两种请求方法 vue中使用axios方法我们先安装axios这个方法 npm install --save axios 安装之后采用按需引入 ...
- mysql之连接查询、联合查询、子查询
本文内容: 连接查询 联合查询 子查询 from子查询 where子查询 exists子查询 首发日期:2018-04-11 连接查询: 连接查询就是将多个表联合起来查询,连接查询方式有内连接.外连接 ...
- CentOS基本的命令与快捷建
由于我的计算机在安装linux系统时,计算机出现了问题,并没有安装ubuntu而是安装的centos.虽然两者属于linux的不同版本,但是在具体的操作上大同小异.在学习linux的各种指令和快捷键的 ...
- 同一个菜品商家中心和erp价格显示不一致解决方案FAQ
1.适用场景: 2.问题原因:子账号在商家中心改了价格 3.解决办法: (1).子账号登录商家后台修改 再同步(2).ERP上商品管理 修改价格
- jsp include 报错:illegal to have multiple occurrences of contentType with different values (old: text/html; charset=UTF-8, new: text/html; carset=UTF-8)
严重: Servlet.service() for servlet jsp threw exception org.apache.jasper.JasperException: /jsp.jsp(1, ...