1.IOS中XML文件获取
 
 //设置远程访问地址
    NSURL *url=[NSURL URLWithString:@""];
 
    //创建动态URL请求,并初始化
    NSMutableURLRequest * request=[[NSMutableURLRequest alloc]initWithURL:url];
 
    //设置访问方式为POST
    [request setHTTPMethod:@"post"];
 
    //设置传参参数(字符串)
    NSString * str=@"";
 
    //二进制的参数字符串
    NSData * data=[str dataUsingEncoding:NSUTF8StringEncoding];
 
    //放在请求里
    [request setHTTPBody:data];
 
    //发送请求
    NSData * resData=[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
 
    NSString * s=[[NSString alloc]initWithData:resData encoding:NSUTF8StringEncoding];
    NSLog(@"%@",s);
 
//通过二进制的数据创建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解析

    XML文件有2种解析方式 1.基于文档(document) 2.基于事件(sax)   1.IOS中XML文件获取   首先要将XML导入工程中 在ViewController的按钮事件中,代码如下: ...

  2. iOS:网络编程中三个数据解析协议HTTP、XML、JSON的详细介绍

    网络编程:HTTP协议.XML数据协议.JSON数据协议: HTTP: 1.HTTP传输数据有四种方式:Get方式.Post方式.同步请求方式.异步请求方式. 说明:同步和异步请求方式在创建链接对象和 ...

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

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

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

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

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

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

  6. iOS开发——网络篇——JSON和XML,NSJSONSerialization ,NSXMLParser(XML解析器),NSXMLParserDelegate,MJExtension (字典转模型),GDataXML(三方框架解析XML)

    一.JSON 1.JSON简介什么是JSONJSON是一种轻量级的数据格式,一般用于数据交互服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典 ...

  7. iOS开发——网络Swift篇&JSON与XML数据解析

    JSON与XML数据解析 JSON数据解析(内置NSJSONSerialization与第三方JSONKit)   一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SD ...

  8. iOS开发网络篇—JSON数据的解析

    iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...

  9. IOS网络第二天 - 04-黑酷-GDataXML 解析

    ****** - (void)viewDidLoad { [super viewDidLoad]; /** 加载服务器最新的视频信息 */ // 1.创建URL NSURL *url = HMUrl( ...

随机推荐

  1. Scrum 项目5.0--软件工程

    1.燃尽图: 2.每日立会更新任务板上任务完成情况.燃尽图的实际线,分析项目进度是否在正轨.    每天的例会结束后的都为任务板拍照并发布到博客上     团队贡献分: 蔡舜 : 21 卢晓洵 : 1 ...

  2. SQL查询语言练习

    USE master GO IF EXISTS (SELECT * FROM sysdatabases WHERE name='MyStudentInfoManage') DROP DATABASE ...

  3. C#设计模式——生成器模式(Builder Pattern)

    一.概述在软件系统中,有时候面临着复杂的对象创建,该对象由一定算法构成的子对象组成,由于需求变化,这些子对象会经常变换,但组合在一起的算法却是稳定的.生成器模式可以处理这类对象的构建,它提供了一种封装 ...

  4. C#更改win7系统时间的代码,以及为什么更改不成功

    我在用C#更改win7系统的时间时(必须用管理员的权限,点击要运行程序,鼠标右键“以管理员权限运行”),下面列出了3张图片,使用第一张的代码执行不成功,使用第二张图片可以执行成功,第三张图片是说明原因 ...

  5. 怎样用C#代码知道是否已连接网络

    有时,上传数据和下载数据都需要用到网络,但是不知道程序是否已连接到网络,下面是简单测试是否已连接网络的小功能 1.在winform窗体上添加一个按钮和多选框

  6. FreeBSD的新一代包管理工具Pkg 1.3.0 发布

    Pkg 是 FreeBSD 下一代的打包管理工具,用来替代原来的 pkg_info/pkg_create/pkg_add 工具,可以本地打包,也提供远程打包,主要是为了方便远程二进制包升级. Pkg ...

  7. Visual Studio中设置默认VC++路径

    菜单"View" -> "Other Windows" -> "Property Manager" 选择对应的配置并修改即可.

  8. 从零开始学习Linux (cd命令)

    上一篇博客中提到,我们学习命令大多都要参考 --help 这个选项.但是cd命令并没有这个选项. 我们可以通过 help cd 来查看cd的使用方式.其实cd命令挺简单的,它的作用是进入文件夹,也就是 ...

  9. isEmpty与null、""的区别

    前一段时间我阅读别人的代码,发现有的时候用isEmpty,有的时候用null,有的时候用"".我很困惑三者之间的区别,于是我就自己写了一个程序来验证一下 public class ...

  10. ButterKnife

    1.简介 ButterKnife是注解中相对简单易懂的很不错的开源框架 1.强大的View绑定和Click事件处理功能,简化代码,提升开发效率 2.方便的处理Adapter里的ViewHolder绑定 ...