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解析的更多相关文章

  1. iOS -数据库网络之xml解析之远程解析XML

    1.IOS中XML文件获取    //设置远程访问地址     NSURL *url=[NSURL URLWithString:@""];       //创建动态URL请求,并初 ...

  2. iOS -数据库网络之xml解析之第三方解析XML

    1.导入第三方插件(GDalaXMLNode)   2.第三方插件配置   libxml/tree.h 路径   在项目属性中--Bulid Settings中搜索 Search   --Search ...

  3. iOS开发网络篇—XML数据的解析

     iOS开发网络篇—XML数据的解析 iOS开发网络篇—XML介绍 一.XML简单介绍 XML:全称是Extensible Markup Language,译作“可扩展标记语言” 跟JSON一样,也是 ...

  4. [iOS 多线程 & 网络 - 2.3] - 解析xml

    A.XML基本知识 1.xml概念 什么是XML全称是Extensible Markup Language,译作“可扩展标记语言”跟JSON一样,也是常用的一种用于交互的数据格式一般也叫XML文档(X ...

  5. Java数据库编程、XML解析技术

    数据库编程 JDBC概述 是Java Database Connecive,即数据库连接技术的简称,它提供了连接各种常用数据库的能力. 是一种用于执行SQL语句的Java API,可以为多种关系数据库 ...

  6. 网络之XML解析-GData

    GDataXML是一套Google使用Objective-C开发的DOM方式XML解析类库,支持读取和修改XML文档,支持XPath方式查询, GDataXML 是 iOS 下的一款轻量级 XML 解 ...

  7. [iOS 多线程 & 网络 - 2.1] - 解析json

    A.iOS中json的基本使用 1.解析json数据 (1)json反序列化 对象{}格式 {key : value, key : value,...} 的键值对的结构可以反序列化为OC中的NSDic ...

  8. 网络之XML解析-原生

    Json和XML都属于字符串,用于跨平台,前面总结了下Json,下面看下XML. XML定义这些百度比我说的清,不再啰嗦,直接代码,我喜欢把东西都放进注释. 一.首先看下要解析的XML内容 <? ...

  9. IOS SWIFT 网络请求JSON解析 基础一

    前言:移动互联网时代,网络通信已经是手机端必不可少的功能.应用中也必不可少地使用了网络通信,增强客户端与服务器交互.使用NSURLConnection实现HTTP的通信.NSURLConnection ...

随机推荐

  1. 点餐APP 冲刺三总结

    一转眼所有的冲刺都完成了,而今次的冲刺主要是完善数据库,而我们 也成功地实现了,虽然过程很艰辛,但是我们每一个人都学习到了很多新 知识,这是最好的收获.因为今学期没有软件工程的课程,所以大家都是 利用 ...

  2. linq之join子句

    前面我们总结Linq查询子句总共有8个,join子句是我们讲解的最后一个子句.join子句也是相对比较复杂的,所以最后来讲.join子句可以处理两个数据源之间的联系,当然这两个数据源之间必须存在相关联 ...

  3. C#修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限

    C#修改文件或文件夹的权限,为指定用户.用户组添加完全控制权限 public void SetFileRole(string foldPath) { DirectorySecurity fsec = ...

  4. C#十五子游戏

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  5. 【jQuery基础学习】07 jQuery表单插件-Form

    作用:jQuery Form插件的作用是为了让我们可以很方便地用ajax的方式提交表单,从而使我们提交表单的时候页面不用进行刷新. 它的核心方法是ajaxForm()和ajaxSubmit() 升级表 ...

  6. (旧)子数涵数·PS——换脸

    一.打开Photoshop,打开下载好的两张素材图(均在百度下载的). 二.选中人物脸的部分,不需要很精确(哪种抠图方式都行,我用的是矩形选框工具),再使用移动工具(快捷键为V,或者按着Ctrl),将 ...

  7. linux shell 编程

    1,获取命令执行的结果,字符串拼接(脚本最常使用的功能)   cmd_result=$(date +%Y%b%d)        //使用变量获取命令执行的结果 或者 cmd_result=`date ...

  8. ssh 客户端远程vi文本文件中文乱码(亲测)

    由于是生产环境,且非笔者控制,为了避免影响系统全局,仅对本session有效 export LANG="zh_CN.UTF-8"export LANG="zh_CN.GB ...

  9. [Xamarin.iOS] Visual Studio中Xamarin.iOS项目,无法加入PCL项目参考、NuGet组件参考

    [Xamarin.iOS] Visual Studio中Xamarin.iOS项目,无法加入PCL项目参考.NuGet组件参考 解决方案 目前Visual Studio中最新版本的Xamarin.iO ...

  10. HTML5中的canvas基本概念及绘图

    * Canvas(画布) * 基本内容 * 简单来说,HTML5提供的新元素<canvas> * Canvas在HTML页面提供画布的功能 * 在画布中绘制各种图形 * Canvas绘制的 ...