zoukankan      html  css  js  c++  java
  • IOS开发之路三(XML解析之GDataXML的使用)

    最近再做一个项目需要用到xml的解析。今天查了一些资料自己做了一个小demo。纯OC没有界面。。

    在IOS平台上进行XML文档的解析有很多种方法,在SDK里面有自带的解析方法,但是大多情况下都倾向于用第三方的库,原因是解析效率更高、使用上更方便,关于IOS平台各种解析XML库的优缺点分析,可以看下这篇文章:http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project

    这里主要介绍一下由Google提供的一种在IOS平台上进行XML解析的开源库GDataXML,可以到http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/下载源码,下载下来后进入文件夹找到XMLSupport文件夹,将里面的GDataXMLNode.h和GDataXMLNode.m文件拖拽到项目中新建的文件夹即可(我这里是建的GDataXML文件夹),注意要选中复制文件到项目中而不是只是引用,如图:


     

     

    然后就是对工程进行一些配置,点击工程根目录然后点击左边的Target,进入Build Phases,然后点击第三个Link binary with libraries,点击加号搜索libxml2并将这个库添加到工程,如图:


     

     

    接下来再进入Build Settings,在搜索框中搜索Head Search Path,然后双击并点击+按钮添加/usr/include/libxml2,如图:

     

    接下来再搜索框中搜索Other linker flags,同样的方式添加-lxml2,如图:

     

    到这里,添加和配置的工作就完成了(是有点麻烦),接下来就看如何使用了:

    首先在工程中新建一个xml文件,作为我们要解析的对象。

     

     

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <root>  
    3.     <name value="lixingle"/>  
    4.     <age>22</age>  
    5.     <name value="wildcat"/>  
    6.     <age>21</age>  
    7. </root>  
    1. <span style="color:#33ff33;">主函数:</span>  
    1. //  
    2. //  main.m  
    3. //  XMLGdatademo2  
    4. //  
    5. //  Created by WildCat on 13-8-4.  
    6. //  Copyright (c) 2013年 wildcat. All rights reserved.  
    7. //  
    8.   
    9. #import <Foundation/Foundation.h>  
    10. #import "GdataXMLNode.h"  
    11.   
    12.   
    13.   
    14.   
    15.   
    16.   
    17. int main(int argc, const char * argv[])  
    18. {  
    19.   
    20.       
    21.     @autoreleasepool {  
    22.          
    23.         //NSString *filePath = [[NSBundle mainBundle] pathForResource:@"users" ofType:@"xml"];  
    24.           
    25.          //获取工程目录的xml文件          
    26.         NSString *filePath=[NSString stringWithFormat:@"/WildCat/IOSTiKu/2013_OC/XMLGdatademo2/test.xml"];  
    27.         //获得data  
    28.         NSString *xmlString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];  
    29.           
    30.           
    31.         GDataXMLDocument *xmlDoc = [[GDataXMLDocument alloc] initWithXMLString:xmlString options:0 error:nil];  
    32.         GDataXMLElement *xmlEle = [xmlDoc rootElement];  
    33.         NSArray *array = [xmlEle children];  
    34.           
    35.         NSLog(@"count : %zi", [array count]);  
    36.           
    37.         for (int i = 0; i < [array count]; i++) {  
    38.             GDataXMLElement *ele = [array objectAtIndex:i];  
    39.               
    40.             // 根据标签名判断  
    41.             if ([[ele name] isEqualToString:@"name"]) {  
    42.                 // 读标签里面的属性  
    43.                 NSLog(@"name --> %@", [[ele attributeForName:@"value"] stringValue]);  
    44.             } else {  
    45.                 // 直接读标签间的String  
    46.                 NSLog(@"age --> %@", [ele stringValue]);  
    47.             }    
    48.               
    49.         }  
    50.     }  
    51.                 
    52.     return 0;  
    53. }  


    结果:

     

    2013-08-04 14:05:46.814 XMLGdatademo2[1825:303] count : 4

    2013-08-04 14:05:46.818 XMLGdatademo2[1825:303] name --> lixingle

    2013-08-04 14:05:46.819 XMLGdatademo2[1825:303] age --> 22

    2013-08-04 14:05:46.819 XMLGdatademo2[1825:303] name --> wusj

    2013-08-04 14:05:46.820 XMLGdatademo2[1825:303] age --> 24


    转载请注明:

    新浪微博:http://weibo.com/u/3202802157

  • 相关阅读:
    Pandas中dataframe以及spark中rdd使用groupByKey进行合并
    Apriori算法Python实现
    安装Cloudera CDH
    HDFS常用命令
    vuex modules 命名空间
    sessionStore使用
    indexof使用
    vue 简单购物车实现
    etCapture() 和 ReleaseCapture()的用法
    js组合继承与寄生继承
  • 原文地址:https://www.cnblogs.com/lixingle/p/3274730.html
Copyright © 2011-2022 走看看