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. HTML-DIV布局

    <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content= ...

  2. fibonacci高精度加法

    A Fibonacci sequence is calculated by adding the previous two members the sequence, with the first t ...

  3. 每个软件都自己把操作系统的host配置项加到内存中供频繁调用

    nginx的转发,http_pass 转发到一个域名passport.ab.cn 那具体是到哪台机器上. 其实可以通过/etc/hosts文件来配置的. 可以理解,这个hosts文件是操作系统级别的, ...

  4. Asp.net发布的CheckList

         Asp.net Web 应用程序正式发布前,我们还是做一些检查,所以需要这个CheckList,如下图今天的Asp.net 已演化这样的了:   但不管是什么组件,目前的Web最终还得通过H ...

  5. spring编程式刷新/重新加载applicationcontext/dispatchservlet(正确版)

    有些时候,尤其是在开发应用框架的时候,由于某些原因无法或者很难重启tomcat或者reload应用,但是配置又需要动态生效,这个时候通常希望通过reload spring applicationcon ...

  6. [Xamarin.Android] 自定义控件

    [Xamarin.Android] 自定义控件 前言 软件项目开发的过程中,免不了遇到一些无法使用内建控件就能满足的客户需求,例如:时速表.折线图...等等.这时开发人员可以透过自定义控件的方式,为项 ...

  7. 浅谈ES6中的Proxy

    Proxy是一个很有趣的对象,它能够修改某些操作的默认行为,等同于在语言层面做出修改,属于一种‘元编程’,即对编程语言进行编程. Proxy其实很好理解,就是在目标对象之前架设一层拦截,外界的访问都得 ...

  8. SAP技术相关Tcode

    ABAP的常用tcode 开发----------------------------------------------- SE51  屏幕制作 SE91  MESSAGE OBJECT SE80  ...

  9. 转:Web应用程序项目XX已配置为使用IIS

    转:http://www.cnblogs.com/Joetao/articles/2392526.html 今天在看开源项目Umbraco是,出现一个项目加载不了,并报如下错误: Web应用程序项目U ...

  10. UWP开发-重新理解MVVM

    MVVM是一个比较热门的开发框架,尽管已经出现很久了,仍然比较受欢迎.MVVM框架包括: M:Model:Model指的是数据模型,例如你要在页面展示联系人信息,那么Model就是联系人的模型,包括联 ...