Xml转Plist

本文介绍如何从iOS应用中读取本地XML文件,并利用GDataXMLDocument进行解析,最终将解析后的数据保存为PLIST文件。文章通过具体代码展示了获取节点、属性的过程,并详细解释了多级数据结构的处理方法。

 1.获取本地xml文件

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

 NSData *plistXML = [[NSData alloc] initWithContentsOfFile:filePath];

 

2.解析xml文件

 NSError *error;

 GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:plistXML error:&error];

 NSMutableArray*dataArr=[NSMutableArray array];

 NSArray *provinceArr= [doc nodesForXPath:@"/root/province" error:nil];

 //获取属性, 属性使用GDataXMLElement表示

 for (int i=0; i<provinceArr.count; i++) {

    NSMutableDictionary*pDic=[NSMutableDictionary dictionary];

    //省或直辖市名

    GDataXMLElement *item=(GDataXMLElement*)[provinceArr objectAtIndex:i];

    GDataXMLNode*pStr=[item attributeForName:@"name"];

    [pDic setObject:pStr.stringValue forKey:@"state"];

    //        NSLog(@"dis_stringValue1=%@",pStr.stringValue);

        

    //城市名

    NSMutableArray*tempCityArr=[NSMutableArray array];

    NSArray*cityArray=[provinceArr[i] children];

    for (int j=0; j<cityArray.count; j++) {

       NSMutableDictionary*cityDic=[NSMutableDictionary dictionary];

            GDataXMLElement *cityItem=cityArray[j];

            GDataXMLNode*cityStr=[cityItem attributeForName:@"name"];

            NSLog(@"dis_stringValue2=%@",cityStr.stringValue);

            [cityDic setObject:cityStr.stringValue forKey:@"city"];

            

            //区名

            NSMutableArray*disTempArr=[NSMutableArray array];

            NSArray*discritArr=[cityArray[j] children];

            for (int k=0; k<discritArr.count; k++) {

               GDataXMLElement *disItem=discritArr[k];

                NSString*XMLString=[disItem XMLString];

                if (XMLString.length>0) {

                    GDataXMLNode*disStr=[disItem attributeForName:@"name"];

                    NSLog(@">>>>>disItem.attributes=%@",disStr.stringValue);

                    [disTempArr addObject:disStr.stringValue];

                }

            }

            [cityDic setObject:disTempArr forKey:@"areas"];

            [tempCityArr addObject:cityDic];

        }

        

        [pDic setObject:tempCityArr forKey:@"cities"];

        [dataArr addObject:pDic];

    }

    

//    NSLog(@">>>>>>>>>>>dataArr=%@",dataArr);

3.保存plist文件    

    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

    NSString *path=[paths objectAtIndex:0];

    NSString *filename=[path stringByAppendingPathComponent:@"area.plist"];

    NSLog(@">>>>>>>>>>>>>filename=%@",filename);

    [dataArr writeToFile:filename atomically:YES];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值