XML文件有2种解析方式 1.基于文档(document) 2.基于事件(sax)
1.IOS中XML文件获取
首先要将XML导入工程中
在ViewController的按钮事件中,代码如下:
//获取xml完整路径
NSString * path=[[NSBundle mainBundle] pathForResource@"xml文件名称" ofType:@"xml"];
//读取文件到内存
NSData* data=[NSData dataWithContentsOfFile:path];
//通过二进制的数据创建xml转化器
NSXMLParser * parser=[[NSXMLParser alloc]initWithData:data];
//设置代理在对应.h文件中实现该代理<NSXMLParserDelegate>
[parser setDelegate:self];
//启动转换
[parser parse];
2.XML中常用的几种行为
//文档转化开始
-(void)parserDidStartDocument:(NSXMLParser)parser
{
}
//文档转换结束
-(void)parserDidEndDocument:(NSXMLParser)parser
{
}
//元素开始
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *) elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *) qName attributes:(NSDictionary *) attributeDict
{
}
//元素结束
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *) elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *) qName
{
}
//发现字符串
-(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *) string
{
}
3.XML解析
对于XML格式为多个元素解析:
XML代码如下
<students> <student> <name>张三</name> <sex>男</sex> <age>21</age> </student></students>
(1)创建该元素的类继承NSOject(JCStudent)
JCStudent.h中
//姓名
@property (strong,nonatomic) NSString * name;
//性别
@property (strong,nonatomic) NSString * sex;
//年龄
@property (assign,nonatomic) int age;
(2)ViewController.h中设置属性
#import "JCStudent.h"
@interface ViewController : UIViewController<NSXMLParserDelegate>
{
NSMutableArray * students; //学生数组
BOOL isbz; //元素开始标志
NSString * parName; //字符串内容
JCStudent * student; //student类
}
(3)在ViewController.m中XML的几个行为编写代码
在viewDidLoad方法中
//初始化动态数组
students=[[NSMutableArray alloc]initWithCapacity:100];
在“文档转换开始”方法中
//清空数据
[students removeAllObjects];
//字符串内容清空
parName=@"";
//标志为NO
isbz=NO;
在“元素开始”方法中
if(isbz==YES){//如果标志为YES
parName=elementName; //字符串内容赋值
}
if([elementName isEqualToString:@"student"]){//如果元素为student
isbz=YES; //标志改为YES
student=[[JCStudent alloc]init]; //JCStudent初始化
}
在“发现字符串”方法中
if(isbz==YES && parName.length>0){//如果标志为YES字符串内容有值
[student setValue:string forKey:parName];//添加字符串信息到属性类中
parName=@"";//字符串内容清空
}
在“元素结束”方法中
if([elementName isEqualToString:@"student"]){//如果元素结束为student
[students addObject:student];//添加类到动态数组中
isbz=NO;//标志设置为NO
}
在“文档转换结束”方法中
//遍历数组
for(JCStudent * s in students){
NSLog(@"name=%@,sex=%@,age=%d",s.name,s.sex,s.age);//控制台输出
}
对于XML格式为单个元素解析(attributeDict字典):
XML代码如下
<students> <student name=”张三” sex=“男” age=“21” /></students>
(1)创建该元素的类继承NSOject(JCStudent)
JCStudent.h中
//姓名
@property (strong,nonatomic) NSString * name;
//性别
@property (strong,nonatomic) NSString * sex;
//年龄
@property (assign,nonatomic) int age;
(2)ViewController.h中设置属性
#import "JCStudent.h"
@interface ViewController : UIViewController<NSXMLParserDelegate>
{
NSMutableArray * students; //学生数组
JCStudent * student; //student类
}
(3)在ViewController.m中XML的几个行为编写代码
在viewDidLoad方法中
//初始化动态数组
students=[[NSMutableArray alloc]initWithCapacity:100];
在“文档转换开始”方法中
//清空数据
[students removeAllObjects];
在“元素开始”方法中
if([elementName isEqualToString:@"student"]){//如果开始元素为 student
student= [[JCStudent alloc]init];//student类初始化
NSArray * arr=[attributeDict allKeys];//新建数组获取所有元素的key
for(NSString * str in arr){//遍历数组
[student setValue:[attributeDict objectForKey:str] forKey:str];//添加数组到student类中,Value根据Key获得
}
}
在“元素结束”方法中
if([elementName isEqualToString:@"student"]){//如果元素结束为student
[students addObject:student];//添加类到动态数组中
}
在“文档转换结束”方法中
//遍历数组
for(JCStudent * s in students){
NSLog(@"name=%@,sex=%@,age=%d",s.name,s.sex,s.age);//控制台输出
}
- iOS -数据库网络之xml解析之远程解析XML
1.IOS中XML文件获取 //设置远程访问地址 NSURL *url=[NSURL URLWithString:@""]; //创建动态URL请求,并初 ...
- iOS -数据库网络之xml解析之第三方解析XML
1.导入第三方插件(GDalaXMLNode) 2.第三方插件配置 libxml/tree.h 路径 在项目属性中--Bulid Settings中搜索 Search --Search ...
- iOS开发网络篇—XML数据的解析
iOS开发网络篇—XML数据的解析 iOS开发网络篇—XML介绍 一.XML简单介绍 XML:全称是Extensible Markup Language,译作“可扩展标记语言” 跟JSON一样,也是 ...
- [iOS 多线程 & 网络 - 2.3] - 解析xml
A.XML基本知识 1.xml概念 什么是XML全称是Extensible Markup Language,译作“可扩展标记语言”跟JSON一样,也是常用的一种用于交互的数据格式一般也叫XML文档(X ...
- Java数据库编程、XML解析技术
数据库编程 JDBC概述 是Java Database Connecive,即数据库连接技术的简称,它提供了连接各种常用数据库的能力. 是一种用于执行SQL语句的Java API,可以为多种关系数据库 ...
- 网络之XML解析-GData
GDataXML是一套Google使用Objective-C开发的DOM方式XML解析类库,支持读取和修改XML文档,支持XPath方式查询, GDataXML 是 iOS 下的一款轻量级 XML 解 ...
- [iOS 多线程 & 网络 - 2.1] - 解析json
A.iOS中json的基本使用 1.解析json数据 (1)json反序列化 对象{}格式 {key : value, key : value,...} 的键值对的结构可以反序列化为OC中的NSDic ...
- 网络之XML解析-原生
Json和XML都属于字符串,用于跨平台,前面总结了下Json,下面看下XML. XML定义这些百度比我说的清,不再啰嗦,直接代码,我喜欢把东西都放进注释. 一.首先看下要解析的XML内容 <? ...
- IOS SWIFT 网络请求JSON解析 基础一
前言:移动互联网时代,网络通信已经是手机端必不可少的功能.应用中也必不可少地使用了网络通信,增强客户端与服务器交互.使用NSURLConnection实现HTTP的通信.NSURLConnection ...
随机推荐
- 面向对象的JavaScript(2):类
在小项目中对于JavaScript使用,只要写几个function就行了.但在大型项目中,尤其是在开发追求良好的用户体验的网站中,如SNS,就会 用到大量的JavaScrpt,有时JavaScript ...
- 利用Aspose.Cell控件导入Excel非强类型的数据
导入Excel的操作是非常常见的操作,可以使用Aspose.Cell.APOI.MyXls.OLEDB.Excel VBA等操作Excel文件,从而实现数据的导入,在导入数据的时候,如果是强类型的数据 ...
- AEAI WM V1.0 工作管理系统开源发版
AEAI WM工作管理系统是沈阳数通畅联软件公司基于AEAI DP平台开发的开源Java Web系统,用来管理记录日常工作内容及周工作内容等事务,AEAI WM工作管理系统包括一些核心的工作管理业务功 ...
- ASP.NET MVC的路由
好久没写博文了,感觉最近好像少了点动力.唉!这回就看看这个MVC的路由. 说这个路由机制其实不是MVC里面特有的,ASP.NET里面本身就有的,只不过在WebForm里面一般比较少用,而在MVC里就是 ...
- C#的注释和快速开启工具的命令
1.注释的方法 1)sqlserver中,单行注释:—— 多行注释:/****/ 2)C#中,单行注释:// 多行注释:/****/ 3)C#中多行注释的快捷方式:启用ctrl+E+C ,撤 ...
- 重新想象 Windows 8 Store Apps (57) - 本地化和全球化
[源码下载] 重新想象 Windows 8 Store Apps (57) - 本地化和全球化 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 本地化和全球化 本地化 ...
- LeetCode127:Word Ladder II
题目: Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) ...
- 使用Dhcpstarv解决DHCP服务器冲突问题
场景: 内网环境需要开启多个DHCP服务器,分别给不同的设备进行PXE安装. 存在的问题: 多个DHCP的情况下,设备在启动时随机从一个DHCP服务器获取IP(哪个DHCP服务器先响应就从哪个获取)并 ...
- mybatis generator with oracle
1.generator.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generat ...
- Hibernate框架之注解的配置
在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式 ...