iOS_解析XML :KissXML、XmlReader

iOS_解析XML(很实用的两框架:KissXML、XmlReader)

关于网络返回的数据进行解析,一般有JSON解析和XML解析,JSON解析几乎没有任何技术含量,使用反序列化即可(NSJSONSerialization) ,解析XML确实有点技术含量,但是吧很多朋友却总在纠结DOM解析和SAX解析,其实还是有很多框架可以用的,下面介绍两个实际工作中常用的两个框架:KissXML和XmlReader

准备资料:
  1. 一个XML的文件:demo.xml
  2. xml内容为:
    "sannianerban">
     "赵四" age = "18"/>
     "赵四1" age = "118"/>
    

框架一、KissXML

一)、简介:
  • 有人说简单,有人说麻烦,,,我觉得:此处省略一万字。
二)、配置

1、添加附件里面的KissXML到工程
2、加入libxml2.tbd 到Frameworks
3、修改工程信息,右击Targets下工程名选“Build Settings”,进入Header Search Paths添加:/usr/include/libxml2
4、引用头文件:#import "DDXML.h"

三)、使用
    //获取xml路径
    NSString *path = [[NSBundle mainBundle] pathForResource:@"demo.xml" ofType:nil];
    NSString *xmlString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

    DDXMLDocument  *doc =  [[DDXMLDocument alloc] initWithXMLString:xmlString options:0 error:nil];

    //开始解析
    NSArray *children = [doc nodesForXPath:@"//Student" error:nil];

    //遍历每个元素
    for (DDXMLElement *obj in children) {

         NSString *name =[[obj attributeForName:@"name"] stringValue];
         NSString *age =[[obj attributeForName:@"age"] stringValue];

         NSLog(@"name = %@,age = %@",name,age);
    }

框架二、XMLReader

一)、简介:
  • XmlDocument和XElement在读取Xml时要将整个Xml文档放到内存中去操作,这样做操作简单,但是很费内存和IO(可能是磁盘IO或者网络IO);而在有些场景下我们必须考虑尽可能节省内存和IO的开销,就考虑XmlReader
    XmlReader读取Xml需要通过Read()实例方法,不断读取Xml文档中的声明,节点开始,节点内容,节点结束,以及空白等等,直到文档结束,Read()方法返回false。
  • XmlReader是基于数据流的,占用极少的内存,是只读方式的,所以速度极快.只能采用遍历的模式查找数据节点。
二)、使用:

引用头文件:#import "XMLReader.h"

//1. 本地获取XML,并转化为NSData类型
    NSString *path = [[NSBundle mainBundle] pathForResource:@"demo.xml" ofType:nil];
    NSURL *url = [NSURL fileURLWithPath:path];
    NSData *data = [NSData dataWithContentsOfURL:url];

    //2. 开始转化
    NSError *error;
    NSDictionary *dic = [XMLReader dictionaryForXMLData:data error:&error];

    //3. 打印出来之后,自己字典转模型吧,这个不用我教吧??
    NSLog(@"把内容字典转模型 = %@",dic);      
转自  http://www.jianshu.com/p/2eb1c93d75bb

你可能感兴趣的:(iOS_解析XML :KissXML、XmlReader)