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>
那麼如何在android中解析呢?
一:在GitHub上下載android-plist-parser
https://github.com/tenaciousRas/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();
相關文章
- android下解析.plist配置檔案的xml解析器AndroidXML
- 什麼是Plist檔案
- cocos讀取plist檔案
- plist檔案格式轉換器
- android: AAC檔案解析Android
- Plist Converter for mac(plist檔案轉換工具) v1.4.1 啟用版Mac
- iOS專案開發實戰——plist陣列解析iOS陣列
- Android之XML檔案解析AndroidXML
- 如何將plist檔案或者陣列NSArray轉化為.json檔案?陣列JSON
- Android WebView 上傳檔案支援全解析AndroidWebView
- Android程式碼混淆配置(Proguard檔案解析)Android
- 【Android APK】解析SD卡上的APK檔案AndroidAPKSD卡
- eml檔案解析
- Class檔案解析
- Android studio 無法建立layout_land檔案解析Android
- jdom解析xml檔案XML
- java class檔案解析Java
- BVH檔案格式解析
- Nginx配置檔案解析Nginx
- GData解析XML檔案XML
- redis配置檔案解析Redis
- jquery 解析xml檔案jQueryXML
- oracle trace檔案解析Oracle
- ISO檔案解析(轉)
- XML 檔案解析實踐 (DOM 解析)XML
- Android逆向之旅---解析編譯之後的Dex檔案格式Android編譯
- Java解析ELF檔案:ELF檔案格式規範Java
- Oracle引數檔案解析——引數解析Oracle
- mybatis原始碼配置檔案解析之五:解析mappers標籤(解析XML對映檔案)MyBatis原始碼APPXML
- webpack打包bundle檔案解析Web
- java class 檔案格式解析Java
- c++ 解析yaml檔案C++YAML
- java解析yaml配置檔案JavaYAML
- 使用 Java 解析XML檔案JavaXML
- 使用PdfRenderer解析PDF檔案
- DHCP常用配置檔案解析
- 解析Mach-o檔案Mac
- 解析listener跟蹤檔案