码迷,mamicode.com
首页 > 移动开发 > 详细

IOS数据解析_使用GDataXML解析,多层结构,相同目录的方法

时间:2014-07-24 17:41:26      阅读:324      评论:0      收藏:0      [点我收藏+]

标签:ios   xml   数据   

项目例子(包含GDataXML框架)

http://download.csdn.net/detail/u013686641/7672689

/*说明

     将GDataXML引入你的项目

     加入libxml2框架

     导入#import "GDataXMLNode.h"

     在TARGETS 接下来再进入Build Settings,在搜索框中搜索header search paths,添加/usr/include/libxml2

     然后搜索Other linker flags,同样的方式添加-lxml2

     然后再将GDataXMLNode.m 标记为不使用ARC: -fno-objc-arc

     */

    //需要解析的字符串

    NSString *xmlString=@"<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://xxxxxxx/2003/05/soap-envelope\" xmlns:xsi=\"http://xxxxx/2001/XMLSchema-instance\" xmlns:xsd=\"http://xxxxxx/2001/XMLSchema\"><soap:Body><GetTypeResponse xmlns=\"http://xxxx.org/\"><GetTypeResult><P_type><P_type_id>0</P_type_id><type_name>服饰</type_name><type_child><P_type><P_type_id>0</P_type_id><type_name>女装</type_name><type_child><P_type><P_type_id>0</P_type_id><type_name>连衣裙</type_name><type_child /></P_type><P_type><P_type_id>0</P_type_id><type_name>短裤</type_name><type_child /></P_type></type_child></P_type></type_child></P_type><P_type><P_type_id>0</P_type_id><type_name>餐饮</type_name><type_child><P_type><P_type_id>0</P_type_id><type_name>川菜</type_name><type_child><P_type><P_type_id>0</P_type_id><type_name>热菜</type_name><type_child /></P_type><P_type><P_type_id>0</P_type_id><type_name>凉菜</type_name><type_child /></P_type><P_type><P_type_id>0</P_type_id><type_name>小吃</type_name><type_child /></P_type></type_child></P_type><P_type><P_type_id>0</P_type_id><type_name>粤菜</type_name><type_child><P_type><P_type_id>0</P_type_id><type_name>汤</type_name><type_child /></P_type><P_type><P_type_id>0</P_type_id><type_name>粥</type_name><type_child /></P_type><P_type><P_type_id>0</P_type_id><type_name>小吃</type_name><type_child /></P_type></type_child></P_type><P_type><P_type_id>0</P_type_id><type_name>湘菜</type_name><type_child><P_type><P_type_id>0</P_type_id><type_name>热菜</type_name><type_child /></P_type><P_type><P_type_id>0</P_type_id><type_name>小吃</type_name><type_child /></P_type></type_child></P_type><P_type><P_type_id>0</P_type_id><type_name>鲁菜</type_name><type_child><P_type><P_type_id>0</P_type_id><type_name>热菜</type_name><type_child /></P_type><P_type><P_type_id>0</P_type_id><type_name>凉菜</type_name><type_child /></P_type></type_child></P_type></type_child></P_type></GetTypeResult></GetTypeResponse></soap:Body></soap:Envelope>";

    

    //开始解析

    GDataXMLDocument *document  = [[GDataXMLDocument alloc] initWithXMLString:xmlString options:0 error:nil];

    

    //得到根节点

    GDataXMLElement *rootElement = [document rootElement];

    //追踪到有效父节点 GetTypeResult

    GDataXMLElement *soapBody=[[rootElement elementsForName:@"soap:Body"] objectAtIndex:0];

    GDataXMLElement *getTypeResponse=[[soapBody elementsForName:@"GetTypeResponse"] objectAtIndex:0];

    GDataXMLElement *getTypeResult=[[getTypeResponse elementsForName:@"GetTypeResult"] objectAtIndex:0];

    

    //存放第一级P_type的内容,如餐饮等

    NSMutableArray *firstArr = [NSMutableArray arrayWithCapacity:0];

    for(GDataXMLElement *element in [getTypeResult elementsForName:@"P_type"])

    {

        //存放一个大类的信息,如餐饮等

        NSMutableDictionary *firstDic = [NSMutableDictionary dictionaryWithCapacity:0];

        

        //存放第一及类的名字

        [firstDic setValue:[[[element elementsForName:@"type_name"] objectAtIndex:0] stringValue] forKey:@"name"];

        [firstDic setValue:[[[element elementsForName:@"P_type_id"] objectAtIndex:0] stringValue] forKey:@"id"];

        //得到子节点

        GDataXMLElement *firstChild=[[element elementsForName:@"type_child"] objectAtIndex:0];

        

        //存放二级类数组

        NSMutableArray *secondArr = [NSMutableArray arrayWithCapacity:0];

        for(GDataXMLElement *element in [firstChild elementsForName:@"P_type"])

        {

            //存放一个二级类的信息,如川菜等

            NSMutableDictionary *secondDic = [NSMutableDictionary dictionaryWithCapacity:0];

            //存放二级类的名字

            [secondDic setValue:[[[element elementsForName:@"type_name"] objectAtIndex:0] stringValue] forKey:@"name"];

            [secondDic setValue:[[[element elementsForName:@"P_type_id"] objectAtIndex:0] stringValue] forKey:@"id"];

            //得到子节点

            GDataXMLElement *secondChild=[[element elementsForName:@"type_child"] objectAtIndex:0];

    

            //存放三级内容的数组

            NSMutableArray *thirdArr=[NSMutableArray  arrayWithCapacity:0];

            for(GDataXMLElement *element in [secondChild elementsForName:@"P_type"])

            {

                NSMutableDictionary *thirdDic=[[NSMutableDictionary alloc] init];

                [thirdDic setValue:[[[element elementsForName:@"type_name"] objectAtIndex:0] stringValue] forKey:@"name"];

                [thirdDic setValue:[[[element elementsForName:@"P_type_id"] objectAtIndex:0] stringValue] forKey:@"id"];

                [thirdArr addObject:thirdDic];

            }

            [secondDic setObject:thirdArr forKey:@"array"];

            [secondArr addObject:secondDic];

        }

        

        [firstDic setObject:secondArr forKey:@"array"];

        [firstArr addObject:firstDic];

    }

    

    NSLog(@"----------------------------%@",firstArr);


IOS数据解析_使用GDataXML解析,多层结构,相同目录的方法,布布扣,bubuko.com

IOS数据解析_使用GDataXML解析,多层结构,相同目录的方法

标签:ios   xml   数据   

原文地址:http://blog.csdn.net/yxiaoping/article/details/38084559

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!