这里使用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文件的更多相关文章

  1. 在iOS 开发中用GDataXML(DOM方式)解析xml文件

    因为GDataXML的内部实现是通过DOM方式解析的,而在iOS 开发中用DOM方式解析xml文件,这个时候我们需要开启DOM,因为ios 开发中是不会自动开启的,只有在mac 开发中才自动开启的.我 ...

  2. java解析XML文件

    dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源 ...

  3. IOS 解析XML文档

    前段时间想找点事做,就是试着看能不能用豆瓣的API做点什么,于是就碰到了这个问题——XML解析. 老师还没讲,只能自己去查. XML文档解析主要有SAX和DOM两种模式,IOS上两种模式都可以用,这里 ...

  4. Java进阶(二十七)使用Dom4j解析XML文件

    使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...

  5. Android 解析XML文件和生成XML文件

    解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...

  6. JAVA使用SAX解析XML文件

    在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...

  7. JAVA中使用DOM解析XML文件

    XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...

  8. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...

  9. XML:使用DOM技术解析xML文件中的城市,实现select级联选择

    中国的城市xml格式:cities.xml <?xml version="1.0" encoding="utf-8"?> <china> ...

随机推荐

  1. [日常] HTTP连接管理

    HTTP连接管理: 1.误解的Connection首部 当http报文经过中间客户端到服务端中间的各种代理设备时,对标签中列出的头信息进行删除,close是事务结束后关掉此条连接 2.消除串行化的时延 ...

  2. java过滤器(简化认证)

    最近在看过滤器,刚刚实现了过滤器的简化认证功能: 使用过滤器简化认证: 在Web应用程序中,过滤器的一个关键用例是保护应用程序不被未授权的用户访问.为跨国部件公司开发的客户支持应用程序使用了一种非常原 ...

  3. [HTML/CSS]导航栏的下划线跟随效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. java Web三大组件--过滤器

    参考博客:http://www.cnblogs.com/coderland/p/5902878.html https://www.cnblogs.com/HigginCui/p/5772514.htm ...

  5. JVM调优(二)经验参数设置

    调优设置具体解析 堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统下,一般限制在1.5 ...

  6. Python 利用Python操作excel表格之openyxl介绍Part2

    利用Python操作excel表格之openyxl介绍 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群(群号:7156436) ## 绘图 c = LineChart()    ...

  7. 章节七、1-ArrayList

    一.集合是一个容器,前面讲的数值也是一个容器, 它们的区别是: 1.数组既可以存储基本数据类型,又可以存储引用数据类型,而集合只能存储引用数据类型,也就是对象. 2.基本数据类型存储的是值,引用数据类 ...

  8. (python)排序算法

    一.冒泡排序 1.冒泡排序实现思路 需要两层循环,外层循环控制总共循环几次,内层循环控制交换的次数(注意索引超界的问题). 外层第一次循环,内层第一次循环,将第一个元素(y)与第二个元素(y+1)进行 ...

  9. Spark操作HBase报:org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException异常解决方案

    一.异常信息 19/03/21 15:01:52 WARN scheduler.TaskSetManager: Lost task 4.0 in stage 21.0 (TID 14640, hnte ...

  10. java----回文序列判断java

    import java.util.Scanner; public class test02 { public static void main(String[] args) { Scanner in ...