mac os系統自身包含有轉換plist的工具:plutil.其中-p是以human可讀方式顯示plist檔案,而convert就是轉換參數,其中支援的格式有:xml,二進制和json。下面拿一個實際例子測試下,該plist檔案是二進制檔案:
apple@kissair: contents$ls
info.plist macos
resources
apple@kissair: contents$cat i*
bplist00?
!"#$%&'()*(wdtxcodeydtsdkname_nsprefpaneiconfile\cfbundlenamezdtsdkbuild_cfbundledevelopmentregion_cfbundleversion_buildmachineosbuild_nsprincipalclass]nsmainnibfile_nsprefpanesearchparameters_ssupportssuddentermination_cfbundlepackagetype_cfbundleinfodictionaryversion_cfbundleexecutablezdtcompiler_cfbundleidentifier_dtplatformversion\dtxcodebuild_cfbundlesignature_nsprefpaneiconlabel_dtplatformbuildt0463zmacosx10.6_flashplayerpreferences.png\flash
playerv10k549wenglishz15.0.0.239u12f45_fspreferencesmain_flashplayerpreferencesttruetbndls6.0\flash playerp_ com.adobe.flashplayerpreferencesrgmv4h1503t????\flash playe7?i^kv??????,lal????????
'28lejos??????+?
顯示其内容:
plutil -p i*
{
"dtxcode" => "0463"
"dtsdkname" => "macosx10.6"
"nsprefpaneiconfile" => "flashplayerpreferences.png"
"cfbundlename" => "flash player"
"dtsdkbuild" => "10k549"
"cfbundledevelopmentregion" => "english"
"cfbundleversion" => "15.0.0.239"
"buildmachineosbuild" => "12f45"
"nsprincipalclass" => "fspreferencesmain"
"nsmainnibfile" => "flashplayerpreferences"
"nsprefpanesearchparameters" => "flashplayerpreferences"
"nssupportssuddentermination" => "true"
"cfbundlepackagetype" => "bndl"
"cfbundleinfodictionaryversion" => "6.0"
"cfbundleexecutable" => "flash player"
"dtcompiler" => ""
"cfbundleidentifier" => "com.adobe.flashplayerpreferences"
"dtplatformversion" => "gm"
"dtxcodebuild" => "4h1503"
"cfbundlesignature" => "????"
"nsprefpaneiconlabel" => "flash player"
"dtplatformbuild" => "4h1503"
}
轉換:
apple@kissair: contents$plutil -convert xml1 i* -o ~/x
這是轉換後的内容:
apple@kissair: ~$file x
x: xml document text
apple@kissair: ~$cat x
<?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>buildmachineosbuild</key>
<string>12f45</string>
<key>cfbundledevelopmentregion</key>
<string>english</string>
<key>cfbundleexecutable</key>
<string>flash player</string>
<key>cfbundleidentifier</key>
<string>com.adobe.flashplayerpreferences</string>
<key>cfbundleinfodictionaryversion</key>
<string>6.0</string>
<key>cfbundlename</key>
<key>cfbundlepackagetype</key>
<string>bndl</string>
<key>cfbundlesignature</key>
<string>????</string>
<key>cfbundleversion</key>
<string>15.0.0.239</string>
<key>dtcompiler</key>
<string></string>
<key>dtplatformbuild</key>
<string>4h1503</string>
<key>dtplatformversion</key>
<string>gm</string>
<key>dtsdkbuild</key>
<string>10k549</string>
<key>dtsdkname</key>
<string>macosx10.6</string>
<key>dtxcode</key>
<string>0463</string>
<key>dtxcodebuild</key>
<key>nsmainnibfile</key>
<string>flashplayerpreferences</string>
<key>nsprefpaneiconfile</key>
<string>flashplayerpreferences.png</string>
<key>nsprefpaneiconlabel</key>
<key>nsprefpanesearchparameters</key>
<key>nsprincipalclass</key>
<string>fspreferencesmain</string>
<key>nssupportssuddentermination</key>
<string>true</string>
</dict>
</plist>