IOS 中XML、JSON格式解析

作者: 你duck不必呀 | 来源:发表于2019-06-04 09:54 被阅读0次

    XML解析有两种方式

    1.系统自带的方法

    NSXMLParser
    

    使用

    (1)用data初始化

    NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
    

    (2)设置代理,要先遵守协议NSXMLParserDelegate

    parser.delegate = self;
    

    (3)开始解析

    [parser parse];
    

    实现代理的方法

    //开始
    - (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
    

    如果嵌套的元素很多,解析起来很恶心

    2.用第三方库

    libxml2:C语言实现的,默认包含在iOS中
    GDataXML:谷歌基于libxml2开发的
    

    libxml2

    纯C语言写的,http://xmlsoft.org/html/index.html这个是文档要,使用之前需要设置

    项目->TARGETS->Build Phases->Link Binary With Libraries 添加libxml2.tdb

    然后Build Settings-> Header Search Paths下添加路径/usr/include/libxml2

    使用的话还是看文档

    GDataxml

    基于libxml2(需要像上面一样先配置),的oc封装,非ARC环境。在使用的时候(其实就是arc和mrc混编的问题),把.h和.m文件拖到项目,然后到项目->TARGETS->Build Phases->Compile Sources 找到.m文件在后面加上-fno-objc-arc,能编译成功就可以

    使用

    解析成文档
    NSError *xmlerror = nil;
    GDataXMLDocument *xmlDocument = [[GDataXMLDocument alloc]initWithData:data options:0 error:&xmlerror];
    
    获取根元素并获取根元素
    GDataXMLElement *rootElement = self.xmlDocument.rootElement;
    
    获取元素属性
    GDataXMLNode *rootAttribute=[rootElement attributeForName:@"count"]
    
    获取属性的值
    NSString *value=[rootAttribute stringValue];
    
    获取子元素
    NSArray *pointsArray = [rootElement elementsForName:@"subElement"]
    

    XMLJSON解析也是两种方式

    1.系统自带的方法

    NSJSONSerialization 可以跳到头文件看

    OC对象转JSON数据
    + (nullable NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;
    
    JSON数据转OC对象
    + (nullable id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;
    
    OC对象是否可转
    + (BOOL)isValidJSONObject:(id)obj;
    

    2.第三方框架

    JSONKit、SBJson、TouchJSON(感觉系统自带的最好用)
    JSONKit,需要要添加libz.tbd动态库

    相关文章

      网友评论

        本文标题:IOS 中XML、JSON格式解析

        本文链接:https://www.haomeiwen.com/subject/nrzkxctx.html