android解析plist文件

在Android中解析iOS plist文件的详细指南 plist(Property List)文件是苹果公司开发的一种文件格式,用于存储配置信息,类似于XML或JSON文件。它有两种表现形式:二进制和XML,分别适用于不同的应用场景,如资源管理、数据持久化等。在IT行业,尤其是移动应用开发领域,了解plist文件的结构和读取方法对于保证应用的高效运行至关重要。Apple的开发环境Xcode提供了内置工具和API来读写plist文件,但作为一个IT专业人士,更深入地掌握plist文件的操作可以大幅提高开发效率和应用的性能表现。 阅读详情

android解析plist文件

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

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


 

xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>0</key> 
    <dict> 
        <key>北京市</key> 
        <dict> 
            <key>0</key> 
            <dict> 
                <key>北京市</key> 
                <array> 
                    <string>东城区</string> 
                    <string>西城区</string> 
                    <string>朝阳区</string> 
                    <string>丰台区</string> 
                    <string>石景山区</string> 
                    <string>海淀区</string> 
                    <string>门头沟区</string> 
                    <string>房山区</string> 
                    <string>通州区</string> 
                    <string>顺义区</string> 
                    <string>昌平区</string> 
                    <string>大兴区</string> 
                    <string>怀柔区</string> 
                    <string>平谷区</string> 
                    <string>密云县</string> 
                    <string>延庆县</string> 
                </array> 
            </dict> 
        </dict> 
    </dict> 
        ... 
        ... 
        ... 
</dict> 
</plist> 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>0</key>
 <dict>
  <key>北京市</key>
  <dict>
   <key>0</key>
   <dict>
    <key>北京市</key>
    <array>
     <string>东城区</string>
     <string>西城区</string>
     <string>朝阳区</string>
     <string>丰台区</string>
     <string>石景山区</string>
     <string>海淀区</string>
     <string>门头沟区</string>
     <string>房山区</string>
     <string>通州区</string>
     <string>顺义区</string>
     <string>昌平区</string>
     <string>大兴区</string>
     <string>怀柔区</string>
     <string>平谷区</string>
     <string>密云县</string>
     <string>延庆县</string>
    </array>
   </dict>
  </dict>
 </dict>
        ...
        ...
        ...
</dict>
</plist>

那么如何在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<String,PListObject> provinceCities = root.getConfigMap(); 
                     
            for(int i=0; i<provinceCities.keySet().size();i++) { 
             
                Dict provinceRoot = (Dict) provinceCities.get(String.valueOf(i));    
                Map<String,PListObject> province = provinceRoot.getConfigMap(); 
                 
                String provinceName = province.keySet().iterator().next(); 
                System.out.println("省份为:" + provinceName);                      // 打印省份  
                 
                Dict cityRoot = (Dict) province.get(provinceName); 
                 
                Map<String,PListObject> cities = cityRoot.getConfigMap(); 
                 
                for(int j=0;j<cities.keySet().size();j++) { 
                    Dict city = (Dict) cities.get(String.valueOf(j)); 
                    String cityName = city.getConfigMap().keySet().iterator().next(); 
                    System.out.println("城市为:" + cityName);                      // 打印城市  
                    Array districts = city.getConfigurationArray(cityName); 
                    for(int k=0;k<districts.size();k++) { 
                        com.longevitysoft.android.xml.plist.domain.String district = (com.longevitysoft.android.xml.plist.domain.String) districts.get(k); 
                        System.out.println("地区为:" + district.getValue());       // 打印地区  
                    } 
                } 
                 
            } 
             
        } 
         
    }).start(); 

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<String,PListObject> provinceCities = root.getConfigMap();
     
   for(int i=0; i<provinceCities.keySet().size();i++) {
   
    Dict provinceRooSystem.out.println("省份为:" + provinceName);      // 打印省份
    
    Dict cityRoot = (Dict) province.get(provinceName);
    
    Map<String,PListObject> cities = cityRoot.getConfigMap();
    
    for(int j=0;j<cities.keySet().size();j++) {
     Dict city = (Dict) cities.get(String.valueOf(j));
     String cityName = city.getConfigMap().keySet().iterator().next();
     System.out.println("城市为:" + cityName);      // 打印城市
     Array districts = city.getConfigurationArray(cityName);
     for(int k=0;k<districts.size();k++) {
      com.longevitysoft.android.xml.plist.domain.String district = (com.longevitysoft.android.xml.plist.domain.String) districts.get(k);
      System.out.println("地区为:" + district.getValue());  // 打印地区
     }
    }
    
   }
   
  }
  
 }).start();

 

t = (Dict) provinceCities.get(String.valueOf(i)); 
    Map<String,PListObject> province = provinceRoot.getConfigMap();
    
    String provinceName = province.keySet().iterator().next();
    

 




plist解压工具.rar plist文件碎图提取工具,使用方法超级简单 立即下载

相关推荐

unpack_plist_png-master 解压plist合图工具

使用python解压plist合图工具,包含Pillow-2.2.1.win-amd64-py2.7和Pillow-2.6.1.win32-py2.7两个包,适用于win32、win64。亲测可用。内含安装使用说明。

苹果企业开发者应用plist文件的配置

itms-services:///?action=download-manifest&url=https://dn-855play.qbox.me/abctest.plist 此处红色标记的url是plist文件的位置。以下为plist文件的内容,其中 url对应的是ipa文件的路径,注意现在只能使用https的格式存放ipa文件,否则没有办法下载。(这里使用的是七牛云存储) bundle-i

2万+

Android plist 解析工具类及城市plist文件

文件中包括解析plist文件所需的工具类,以及自己封装的解析类,还有城市plist文件,自己写个demo 将文件中内容copy就可以直接使用

【玩转cocos2d-x之十二】plist解析工具:Anti_TexturePacker

原创作品,转载请标明:http://blog.youkuaiyun.com/jackystudio/article/details/12867863 之前拿了一些别人的图片素材,是用TexturePacker打包合成的,结果写程序的时候不知道每个合成前小png图的名字是什么,只能一个一个从plist文件中找,然后猜测对应的名字,再进行显示,如果不对,还要继续猜。。。坑爹啊,效率大大降低了,时间都耗在找...

偶尔e网事 3万+

YOLOv8中Anchor-Based、Anchor-Free及样本分配策略

本文主要介绍yolov8中的anchor机制与样本分配策略的静态策略和动态策略

qq_52889317的博客 2210

2025.06.25【微生物】|Emu工具安装与使用详解:全长16S扩增子微生物丰度分析

Emu是一款基于贝叶斯方法的微生物多样性分析工具,专为处理高错误率的长读长16S/18S扩增子数据优化。本文详细介绍了Emu的安装与使用方法:1)通过conda创建独立环境并安装Emu;2)提供SILVA等预构建数据库的下载指南,并说明自定义数据库的构建方法;3)演示单样本和多样本分析流程,解读关键输出文件;4)介绍丰度表合并、分类等级汇总等实用功能扩展;5)建议后续分析方向。文章还附有官方GitHub链接和相关文献资源,为微生物群落结构研究提供了一套完整的分析解决方案。

1254

Android - plist文件解析

Android解析plist文件 : plist文件示例 : &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt; &lt;plist

一名小安卓的博客 2504

rk3576之imx415 4k@60fps

1;0;1;0;1;0;1;0;1;0;1;0;1;0;

darennet的专栏 704

Android上解析.plist配置文件的xml解析器

plist是苹果机制的xml文件 格式如下: plistversion="1.0"> array>         dict>                 key>countryDomainkey>                 string>HKstring>                 key>codekey>

专注Android开发 1780

利用抖音Cookie充值接口提取支付链接,调起原生微信h5支付宝h5支付

最近开始搞一些个人支付通道的开发,方便个人不用和第三方平台签约就能收款,省去很多流程手续的成本。 然后翻了一下网上并没有太多现成的技术教程,只能自己研究着搞了。 这次要分享的是利用抖音的充值接口,去分析提取出支付链接,分别包含微信原生支付的h5支付链接,和支付宝h5支付链接。 微信h5支付: 抖币充值,抖音充值,抖音直播充值官方入口 - 抖音 支付宝h5支付 抖币充值,抖音充值,抖音直播充值官方入口 - 抖音 整个开发流程思路是以下几步: 1.抓包分析抖音的充值的整个流程,提取关键的一些

Android-逆向的博客 6565

DICOM标准:DICOM医学影像中的覆盖层(Overlay)概念详解

DICOM标准:深入详解DICOM医学影像中的覆盖层(Overlay)

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 1561

Android Plist文件解析

1. 在GitHub上下载android-plist-parser(点击打开链接) 2. 解析主要代码如下:private void parsePListObject(PListObject pListObject) { if (pListObject instanceof Dict) { Dict dict = (Dict) pListObject; parseDict(

4124

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet,在计算机视觉领域,卷积神经网络(Convolutional Neural Network,CNN)已然成为推动众多任务发展的核心力量。从早期简单的图像识别,到如今复杂的目标检测、语义分割、图像生成等任务,CNN 都展现出了卓越的性能。CNN 的发展历程见证了一系列经典模型的诞生,其中 LeNet 作为开山之作,为 CNN 的发展奠定了基础,而 ResNet 则通过创新性的设计,突破了传统神经网络的限制,使得网络能够构建得更深、性能更优。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 14万+

android-plist-parser: 快速解析Android.plist文件

android-plist-parser: 快速解析Android.plist文件 是一个强大的工具库,用于快速、高效地解析Android的plist文件。如果你正在处理与iOS相关的开发任务,需要在Android平台上读取或操作.plist文件,那么这个项目将为你提供极大的便利。 项目简介 android-plist-parser是一个Java实现的开源库,它能够轻松地解析Android系统中的...

gitblog_00008的博客 509

【1】Python交叉编译到OpenHarmony标准系统运行(arm32位)

本文介绍如何Python语言如何在OpenHarmony标准系统运行,包括5.0r和4.1r以及4.0r,和未来版本的OpenHarmony版本上。 Python语言在OpenHarmony上使用,需要将Python解释器CPython移植到OpenHarmony标准系统。通过交叉编译的方式。

weixin_58069108的博客 927

5-EP4CE10F17C8-引脚配置

EP4CE10F17C8-引脚配置

weixin_44479192的博客 719

android解析.plist文件 这篇博文就足够了

刚刚送走2020迎来了2021的第一篇博文 平庸的时候也要不甘平庸 ​​​​我今天第一次遇到交给我一个.plist文件,当场有点懵,但是遇到问题还是不能回避,就研究了一下,然后做一个博文的记录和分享,希望大家遇到的时候少走弯路. 先简单介绍一下.plist文件 .plist文件在iOS开发中经常用到,但是android开发用的比较少.其实跟xml格式的文件很像.下面给一个venues.plist文件示例 <?xml version="1.0" encoding="UTF-8"?> &l..

huihui_android的博客 1330

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android 解析plist文件 城市列表文件为例

前言plist: 全名是:Property List,属性列表文件,它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist ,因此通常被称为 plist文件。文件是xml格式的。Plist文件通常用于IOS开发中储存用户设置,也可以用于存储捆绑的信息。ios提供了该类文件的解析机制,android却没有,有时间需要统一两端的数据资源文件,就需要在android中进行解析正文下面以...

迷途小顽童 998

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android上解析.plist配置文件的xml解析器

由于项目要同时对应iphone和android两个平台,需要统一服务器端的配置文件,所以就有了这个xml解析器,用于解析已经做好iphone的配置文件。现在初步测试没有什么问题,不敢独享代码,特贴出来与大家分享,希望发现问题的朋友,不啬赐教。[code="java"]/** * .plist配置文件的解析器 * 支持array * * * * ...

cwh643的博客 251

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

java plist_java – Android解析Plist文件

快问. ArrayList的内容应该是什么?我想知道你是否在提到Map中的Object列表< String,Object>属性映射然后为什么你不能从地图中获取值Map properties = new HashMap();List plist = new ArrayList(properties.values());除了检查你的plist之外,结构就像一个Dict根元素和一个Dicts...

weixin_32821257的博客 262

Android解析plist文件速度过慢问题的另一种解决方案

Android解析下载下来的ios端的plist文件速度过慢的问题(解析5M大约20000万个节点的plist文件约需要10s多)由于Android本身的解析机制等的影响,目前仍旧无法找到有效的解决方案。 在此条件下,寻求了一套新的解决方案。利用SAX解析plist文件特性(边读边解析),通过修改网上开源的Android-plist-parser的开源库。新建立一个新的线程去进行plist文件的

u012130610的博客 2342

推荐一款强大的Android plist解析器:android-plist-parser

android-plist-parser: 快速解析Android.plist文件 是一个强大的工具库,用于快速、高效地解析Android的plist文件。如果你正在处理与iOS相关的开发任务,需要在Android平台上读取或操作.plist文件,那么这个项目将为你提供极大的便利。 项目简介 android-plist-parser是一个Java实现的开源库,它能够轻松地解析Android系统中的...

gitblog_00004的博客 517

Android开发之:解析plist文件遇到的奇怪问题

今天做新项目 : XXXXX 问题:解析plist出现了ANR, 得不到返回 原因: while死循环,忘记了写   parse.next();

WOSHICAIXIANFENG的专栏 2413

android 解析plist文件

http://www.cnblogs.com/afly/archive/2012/03/12/2391527.html# 转载于:https://www.cnblogs.com/mokey/archive/2013/04/12/3016601.html

ajt1472580369的博客 225
上一篇: Android 正则表达式
下一篇: 解决ScrollView嵌套ListView问题
geekcoder
博客等级 码龄14年 78粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值