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文件逆向工程解包器 unpack_plist.exe,plist文件逆向工程解包程序。 使用TexturePacke等工具可以把多张图片合成一张图片,减少io次数,加快读取数据速度,但却不利于修改。 使用TexturePacke等工具可以把多张图片合成一张图片,减少io次数,加快读取数据速度,但却不利于修改。 本程序可以把一个plist文件中包含的所有图片全部解包出来。 程序基于Python3.7.2(目前最新版),Pillow==5.3.0,PyQt5==5.11.3开发 可百度COCO56到我博客免费下载,当然有能力也可以支持下 https://blog.youkuaiyun.com/COCO56/article/details/88075849 立即下载

相关推荐

plist解压工具.rar

plist文件碎图提取工具,使用方法超级简单

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

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

2万+

unpack_plist_png-master 解压plist合图工具

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

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

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

偶尔e网事 3万+

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

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

android-plist-parser-master

解析ios,plist数据,里面包含测试类

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

省市区plist文件

省市区资源文件,我国省市区名称,包含省市区编码,ios使用的plist文件

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

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

专注Android开发 1781

android-plist-parser-master_我认为不错的_android_

安卓用plist parser master1154

全国职业院校技能大赛-大数据应用赛项-数据挖掘-01

-----------------------推荐Top5结果如下--------------------------------------------第一条数据前10列结果展示为:----------------------------------------相同种类前10的id结果展示为:--------------------相似度top5(商品id:14,平均相似度:0.522356)相似度top1(商品id:1,平均相似度:0.983456)若属于该spu_id,则内容为1否则为0。

Eternity_04的博客 1954

Android Plist文件解析

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

4124

【推荐算法】召回模型总结

【推荐算法】召回模型总结

m0_48086806的博客 6243

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

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

gitblog_00008的博客 509

传统芯片封装工艺流程简介

塑封是将工件和树脂安装在模具中,加热模具,使树脂液化充满模具,降温保持一定时间后,树脂凝结为固态即可取出。它将一个大的晶圆切割成许多单独的小块,每个小块是一个“芯片”(Chip,die),这些芯片是单个集成电路的基本单位。对裸露在外的引线框架外脚电镀Sn-Pb合金,这样不仅可以提高外脚的抗氧化性,还有利于后续与印刷电路板的焊接。导电胶粘贴法:将含有银粉的环氧树脂(银浆)涂敷在框架或基板上,再将芯片放置其上,固化后可以将芯片牢牢粘接。引线框架的各腿是用筋连接着的,起支撑作用,塑封固化后,需要将其连筋切掉。

芯想是陈的博客 3190

PyRoki 入门教程(二)安装与使用

PyRoki是一个用于机器人运动学优化的Python库,具有模块化设计、可扩展性和跨平台支持等特点。它支持逆运动学、轨迹优化和动作重定位等任务,采用Levenberg-Marquardt优化器提高效率。主要功能包括:基于URDF的可微分正向运动学模型、自动生成碰撞基元、通用成本因子和自定义成本函数等。PyRoki支持CPU、GPU和TPU运行,适用于从单机器人到大规模并行处理场景。目前存在一些限制,如仅支持软约束、静态形状和特定关节类型等。官方提供了多个应用示例,包括基础逆运动学、碰撞检测、轨迹优化和手部/

机器人控制与仿真应用 1252

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

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

huihui_android的博客 1330

YOLO11优化:TGRS2026 CKConv结合C3k2 | 方向特征与跨阶段融合协同,小目标漏检率大幅下降

多尺度适配小目标尺寸变化:在 C3k2 不同阶段配置 CKConv 不同核尺度(浅层小核捕获精细纹理,深层大核聚合上下文),兼顾局部细节与全局感知,提升对舰船、车辆等小尺寸目标及红外热目标的检测鲁棒性。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 565

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

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

迷途小顽童 998

FPGA实现串口升级及MultiBoot(十)串口升级SPI FLASH实现

采用软核进行串口升级的原因主要有以下几点:1、官方推荐:官方以前也推出了针对逻辑进行升级的程序《XAPP1081_QuickBoot》,但是从今年起(2024年)官方就停止更新相关例程了(详见下面截图),所以采用官方推荐的软核更新;2、简单并具有通用性:针对SPI或者BPI官方都有相关的IP,可应对市场上80%以上的FLASH,并且官方IP通用性极强,只需要修改几个参数就可以对不同厂家的芯片进行升级操作;

OpenFPGA的博客 1998

30. 如何使用 SEGW 的 redefine 功能对 SAP 标准 OData 服务进行扩展

SAP 发布了很多标准的 Fiori 应用,可以通过笔者的文章里提到的进行浏览。比如 My Opportunities 就是 SAP CRM 领域的一个 Fiori 应用:下图是 Opportunity 明细页面的 Info 标签页:假设我们想在这些标准字段的末尾增添一个新字段 Created By,用来维护当前 Opportunity 的创建者。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1174

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

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

cwh643的博客 251

docker容器ubuntu:latest里使用uv add mysqlclient安装失败的解决方案

在Docker容器(ubuntu:latest)中安装mysqlclient失败,原因是缺少必要的依赖包。错误显示系统找不到pkg-config工具和MySQL客户端库。解决方法:先更新软件源并安装构建工具、Python开发包、MySQL客户端库和pkg-config工具。具体步骤:运行sudo apt update,然后安装build-essential python3-dev default-libmysqlclient-dev pkg-config,最后再执行uv add mysqlclient即可成

拥抱具身智能,昇腾Ascend C 295

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的博客 263

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

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

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

u012130610的博客 2342

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值