zoukankan      html  css  js  c++  java
  • iOS-GData解析XML

    iOS GData 解析XML 总结

    在iOS平台上进行XML解析的方法有很多,在SDK中又自带的解析方法。但是我们更倾向于使用第三方库,原因是解析效率高,使用更加方便。下面介绍Google下的开源库GData解析XML。

    可以到http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/下载源码,下载下来后进入文件夹找到XMLSupport文件夹,将里面的GDataXMLNode.h和GDataXMLNode.m文件拖拽到项目中新建的文件夹即可(我这里是建的GDataXML文件夹),注意要选中复制文件到项目中而不是只是引用,如图:

    工程进屏幕快照 2014-09-18 下午7.38.20.png行一些配置,点击工程根目录然后点击左边的Target,进入Build Phases,然后点击第三个Link binary with libraries,点击加号搜索libxml2并将这个库添加到工程,如图

    屏幕快照 2014-09-18 下午7.41.25.png

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

    屏幕快照 2014-09-18 下午7.43.40.png

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

     作就完成了(是有点麻烦),接下来就看如何使用了:

    屏幕快照 2014-09-18 下午7.45.15.png

    首先在工程中新建一个xml文件,作为我们要解析的对象,新建方法是在工程中新建一个Empty的文件,命名为users.xml,然后添加内容:

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <Users>
    3. <User id="001">
    4.         <name>寒竹子</name>
    5.         <age>24</age>
    6.     </User>
    7. <User id="002">
    8.         <name>hzz</name>
    9.         <age>23</age>
    10.     </User>
    11. </Users>

    接下来就可以开始解析了,在需要解析的文件中引入头文件:#import"GDataXMLNode.h"

    我是新建的一个Empty工程,所以直接在AppDelegate.m中使用,代码如下:

    #import "XRAppDelegate.h"

    #import "GDataXMLNode.h"

    @implementation XRAppDelegate

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    {

        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

        

        // 获取工程目录下的xml文件

        NSString * filePath = [[NSBundle mainBundle] pathForResource:@"users" ofType:@"xml"];

        

        // 将xml文件的内容转为NSdata类型

        NSData * data = [NSData dataWithContentsOfFile:filePath];

        

        // 初始化GData对象 创建文档树

        GDataXMLDocument * doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];

        

        // 获取根节点 (Users)

        GDataXMLElement * rootElement = [doc rootElement];

        

        NSArray * users = [rootElement elementsForName:@"User"];

        

        // 遍历节点

        for (GDataXMLElement * user in users) {

            // 取得user节点的id属性

            NSString * userId = [[user attributeForName:@"id"] stringValue];

            

            // 获取name节点的值

            GDataXMLElement * nameElement = [[user elementsForName:@"name"] objectAtIndex:0];

            NSString * name = [nameElement stringValue];

            

            // 获取age节点的值

            GDataXMLElement * ageElement = [[user elementsForName:@"age"] objectAtIndex:0];

            NSString * age = [ageElement stringValue];

            

            NSLog(@"userId: %@", userId);

            NSLog(@"name: %@", name);

            NSLog(@"age: %@", age);

        }

        

        self.window.backgroundColor = [UIColor whiteColor];

        [self.window makeKeyAndVisible];

        return YES;

    }

    END

  • 相关阅读:
    go语言学习笔记四(函数、包和错误处理)
    objection内存漫游实战
    脱壳工具FRIDA-DEXDump
    jsdom 用法技巧
    关于adb安装指定版本
    ob混淆
    js原型链hook
    js逆向核心:扣代码2
    ssl_logger捕获得物app双向验证数据
    js逆向核心:扣代码
  • 原文地址:https://www.cnblogs.com/hanzhuzi/p/3980017.html
Copyright © 2011-2022 走看看