设为首页 加入收藏

TOP

iOS -数据库网络之xml解析(一)
2017-10-11 14:55:52 】 浏览:8853
Tags:iOS 数据库 网络 xml 解析
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字符串内容有值
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【转载】10 个实用技巧,让 Finde.. 下一篇在Mac 系统上安装密码生成器

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目