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

刚刚送走2020迎来了2021的第一篇博文

平庸的时候也要不甘平庸
平庸的时候也要不甘平庸
​​​​

我今天第一次遇到交给我一个.plist文件,当场有点懵,但是遇到问题还是不能回避,就研究了一下,然后做一个博文的记录和分享,希望大家遇到的时候少走弯路.

先简单介绍一下.plist文件   .plist文件在iOS开发中经常用到,但是android开发用的比较少.其实跟xml格式的文件很像.下面给一个venues.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>场馆列表</key>
    <array>
        <dict>
            <key>name</key>
            <string>龙泉驿区东安湖体育中心主体育场</string>
            <key>prov</key>
            <string>四川</string>
            <key>city</key>
            <string>成都</string>
            <key>county</key>
            <string>龙泉驿区</string>
            <key>street</key>
            <string>成都汽车城大道</string>
        </dict>
        <dict>
            <key>name</key>
            <string>双流体育中心体育场(比赛场,田径热身场)</string>
            <key>lat</key>
            <string>30.5702200000</string>
            <key>lon</key>
            <string>103.8958200000</string>
            <key>prov</key>
            <string>四川</string>
            <key>city</key>
            <string>成都</string>
            <key>county</key>
            <string>双流区</string>
            <key>street</key>
            <string>东升街办白河路延伸段</string>
        </dict>
        <dict>
            <key>name</key>
            <string>棠湖中学体育场(投掷热身场)</string>
            <key>prov</key>
            <string>四川</string>
            <key>city</key>
            <string>成都</string>
            <key>county</key>
            <string>双流区</string>
            <key>street</key>
            <string>双江路二段188号</string>
        </dict>
    </array>
</dict>
</plist>

那么android如何把这个类型的文件进行解析呢?

有一个现成的库可以直接用   可以在主module.gradle里面添加依赖

implementation 'com.googlecode.plist:dd-plist:1.21'

文件可以是后台返给app端也可以是放在asset中的

第一种情形: 如果是放在assets中的文件,解析步骤如下

第一步:建立实体javaBean

public class VenuesBean  {
    private String name;
    private String prov;
    private String city;
    private String county;
    private String street;
// TODO...此处.........getter   setter ......略过
}

第二步:打开assets中的文件并开始解析  并把解析的内容封装成实体类 放到list中

 

List<VenuesBean>venuesList = new ArrayList<>();
NSDictionary dic = (NSDictionary) PropertyListParser.parse(MyApplication.getContext().getAssets().open("venues.plist"));
NSArray venueArr = (NSArray) dic.objectForKey("场馆列表");
NSObject[] array = venueArr.getArray();
for (int i = 0; i < array.length; i++) {
    NSObject nsObject = array[i];
    VenuesBean venuesBean = nsObject.toJavaObject(VenuesBean.class);
    Log.d(TAG, "init: " + venuesBean.toString());
    venuesList.add(venuesBean);
}

第二种情形: 如果文件是网络获取得到的,解析步骤如下

第一步通过接口把.plist文件下载到app中指定的目录,

第二步:在通过File操作打开文件

File file = new File(downloadPath);
FileInputStream downloadFile = new FileInputStream(file);
NSDictionary dic = (NSDictionary) PropertyListParser.parse(downloadFile);

第三步:操作同第一种情形把解析的数据装到list中 

NSArray venueArr = (NSArray) dic.objectForKey("场馆列表");
NSObject[] array = venueArr.getArray();
for (int i = 0; i < array.length; i++) {
    NSObject nsObject = array[i];
    VenuesBean venuesBean = nsObject.toJavaObject(VenuesBean.class);
    Log.d(TAG, "init: " + venuesBean.toString());
    venuesList.add(venuesBean);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值