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. java和javascript双引号嵌套的问题

    双引号不能嵌套双引号,否则一对双引号就结束了. java中双引号中嵌套双引号需要转义: /** * java双引号转义符测试 * @author asus * */ public static voi ...

  2. [爬虫学习笔记]基于Bloom Filter的url去重模块UrlSeen

            Url Seen用来做url去重.对于一个大的爬虫系统,它可能已经有百亿或者千亿的url,新来一个url如何能快速的判断url是否已经出现过非常关键.因为大的爬虫系统可能一秒钟就会下载 ...

  3. c# 正则表达式 匹配中括号&颜色过滤

    现在需要匹配 [color=#000000],以"[color"开头,以"[/color]"结束,中间字符数量不限制,最后返回所有匹配的下标. 代码如下: // ...

  4. 创建WCF服务寄宿到IIS

    一.WCF简介: Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台. 整合了原有的win ...

  5. HTML页面导航栏页脚不动,变换中间部分

    代码段一: <script> $(document).ready(function() { $("#teachingObjectives").click(functio ...

  6. 后缀数组---Musical Theme

    POJ   1743 Description A musical melody is represented as a sequence of N (1<=N<=20000)notes t ...

  7. 批量导数据之利器-load data[2016-07-11]

    由于天热,中午吃完饭后不再去逛了,感觉这段时间其实也是可以利用起来的,所以决定每天中午积累一些小的知识点.今天中午,先总结一下最近造数据用到手命令,load data. 使用这个命令的起源是因为最近要 ...

  8. [moka同学摘录]在Centos 6.5下成功安装和配置了vim7.4

    来源:https://my.oschina.net/gzyh/blog/266097 资源下载地址: 链接:http://pan.baidu.com/s/1kVuaV5P 密码:xkq9   摘要: ...

  9. SharpGL学习笔记(十二) 光源例子:解决光源场景中的常见问题

    笔者学到光源这一节,遇到的问题就比较多了,收集了一些如下所述: (1) 导入的3ds模型,如果没有材质光照效果很奇怪.如下图 (2) 导入的3ds模型,有材质,灯光效果发暗,材质偏色,效果也很奇怪. ...

  10. Dalvik VM和JVM 的比较

    dx:dx工具用于将.class字节码(bytecode)转换为Android字节码(保存在.dex文件中)这个字节码文件 是给 Android 的 Java 虚拟机(Dalvik虚拟机)运行用的. ...