android解析plist文件

android解析plist文件

plist,即property list,是苹果手机软件开发中经常用到的存储文件格式,其实质就是XML文件,但是它遵循一定的格式。比如包含一些指定的元素,如plist,array,string,key等。苹果提供了解析该类文件的机制,可惜在安卓开发工具中却没有提供。经常遇到的情况是,在开发苹果和安卓手机软件的时候,要统一资源文件,这个时候,我们可以采用GitHub中提供的开源android-plist-parser解决方案。

比如我们要解析一个全国省市区的一个plist文件:


 

xml version="1.0" encoding="UTF-8"?> 
 
 
 
    0 
     
        北京市 
         
            0 
             
                北京市 
                 
                    东城区 
                    西城区 
                    朝阳区 
                    丰台区 
                    石景山区 
                    海淀区 
                    门头沟区 
                    房山区 
                    通州区 
                    顺义区 
                    昌平区 
                    大兴区 
                    怀柔区 
                    平谷区 
                    密云县 
                    延庆县 
                 
             
         
     
        ... 
        ... 
        ... 
 
 





 0
 
  北京市
  
   0
   
    北京市
    
     东城区
     西城区
     朝阳区
     丰台区
     石景山区
     海淀区
     门头沟区
     房山区
     通州区
     顺义区
     昌平区
     大兴区
     怀柔区
     平谷区
     密云县
     延庆县
    
   
  
 
        ...
        ...
        ...



那么如何在android中解析呢?

 


一:在GitHub上下载android-plist-parser

 

 


二:解压下载的包,并导入android项目的类路径里。

 


三:解析该文件,并将解析信息打印在控制台。(因为该文件不算太小,因此在新线程中运行,防止主线程卡死)


 

new Thread(new Runnable() { 
        @Override 
        public void run() { 
            PListXMLParser parser = new PListXMLParser();                // 基于SAX的实现  
            PListXMLHandler handler = new PListXMLHandler(); 
            parser.setHandler(handler); 
             
            try { 
                parser.parse(getAssets().open("area.plist"));        // area.plist是你要解析的文件,该文件需放在assets文件夹下  
            } catch (IllegalStateException e) { 
                e.printStackTrace(); 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
             
            PList actualPList = ((PListXMLHandler) parser.getHandler()).getPlist(); 
            Dict root = (Dict) actualPList.getRootElement(); 
 
            Map provinceCities = root.getConfigMap(); 
                     
            for(int i=0; i province = provinceRoot.getConfigMap(); 
                 
                String provinceName = province.keySet().iterator().next(); 
                System.out.println("省份为:" + provinceName);                      // 打印省份  
                 
                Dict cityRoot = (Dict) province.get(provinceName); 
                 
                Map cities = cityRoot.getConfigMap(); 
                 
                for(int j=0;j provinceCities = root.getConfigMap();
     
   for(int i=0; i cities = cityRoot.getConfigMap();
    
    for(int j=0;j province = provinceRoot.getConfigMap();
    
    String provinceName = province.keySet().iterator().next();
    

 




你可能感兴趣的:(Android开发,IOS开发)