屬性列表
在OS X的Cocoa,NeXTSTEP和GNUstep編程框架中,屬性列表(Property List)文件是一種用來存儲序列化後的對象的文件。屬性列表文件的文件擴展名為.plist,因此通常被稱為plist文件。
副檔名 |
.plist |
---|---|
網路媒體型式 | application/x-plist |
開發者 | 蘋果公司和GNUstep, 前NeXT |
格式類型 | 序列化對象 |
表達
由於Plist中存儲的數據是抽象的,其採用的文件格式可以不止一種。NeXTSTEP只使用一種格式,而稍晚的GNUstep和OS X框架導入了不同的文件格式。
NeXTSTEP
NeXTSTEP系統中,Plist被設計為人類可讀的,並可以手工修改,故採用了類似於編程語言的語法將數據序列化為ASCII數據。
字符串被表示為:
"This is a plist string"
二進制數據被表示為:
< [文本形式的十六进制数] >
數組被表示為:
( "1", "2", "3" )
字典則被表示為:
{ "键" = "值"; ... }
NeXT的plist格式的一個限制是它不能表示NSValue對象(即數,布爾值等)。
GNUstep
GNUstep採用了NeXTSTEP的格式,並添加了少許特性。它支持NSValue對象(以普通ASCII碼表示),支持NSDate(序列化成<*DYYYY-MM-DD HH:MM:SS timezone>的格式)。
GNUstep也可以讀寫OS X使用的Plist格式。
Mac OS X
Mac OS X在支持讀取NeXTSTEP格式的同時,並不鼓勵使用它,而是推薦使用Apple導入的兩種新格式。
Mac OS X 10.0中,NeXTSTEP的格式被認為是不被推薦的,並導入了一種新的XML格式,其由Apple定義的公開DTD所規範化。XML格式支持非ASCII格式,亦可存儲NSValue對象。但與GNUstep的ASCII plist格式不同,Apple的NeXTSTEP格式的plist文件不支持這兩種特性。
由於XML文件在儲存時不是最有空間效率的,Mac OS X 10.2導入了一種新的格式,它將plist文件存儲為二進制文件。從Mac OS X 10.4開始,這是偏好設置文件的默認格式。
plutil
工具(在Mac OS X 10.2中導入)可以用來檢查plist的語法,或者對plist文件進行格式轉換。
可以使用任何文本編輯器對XML格式的plist進行更改,同時,Apple提供了「Property List Editor」應用程序(作為Apple Developer Tools的一部分安裝),它是一個樹狀的查看器與編輯器,並可以處理二進制格式的plist。
對於XML格式,XML標籤和相關Foundation類、Core Foundation類型、數據儲存格式的關係如下表所示:
Foundation類 | Core Foundation類型 | XML標籤 | 儲存格式 |
---|---|---|---|
NSString | CFString | <string> | UTF-8編碼的字符串 |
NSNumber | CFNumber | <real>, <integer> | 十進制數字符串 |
NSNumber | CFBoolean | <true />, or <false /> | 無數據(只有標籤) |
NSDate | CFDate | <date> | ISO 8601格式的日期字符串 |
NSData | CFData | <data> | Base64編碼的數據 |
NSArray | CFArray | <array> | 可以包含任意數量的子元素 |
NSDictionary | CFDictionary | <dict> | 交替包含<key>標籤和plist元素標籤 |
defaults
工具可以用於以命令行形式,通過程序的偏好設置域,管理用於儲存偏好設置的plist文件;而Property List Editor則可以用於編輯任何plist文件(包括用於儲存偏好設置的)。從Mac OS X 10.4開始,Apple提供了通過System Events應用程序讀寫plist文件的AppleScript接口,而從Mac OS X 10.5開始,Apple也提供了用於編輯,創建和寫入plist文件的接口[1]。
參考文獻
- ^ AppleScript:属性列表. [2010-09-24]. (原始內容存檔於2010-10-09).
參見
外部連結
- The plist manual page at developer.apple.com
- Property List Programming Guide for Cocoa
- Property List Programming Topics for Core Foundation
- NSPropertyListSerialization class documentation from the GNUstep project
- OpenStep plist API from Sun Microsystems
- Apache Commons Configuration (頁面存檔備份,存於網際網路檔案館) Configuration API in Java supporting the Property List format
- Apple's Property List Document Type Definition (頁面存檔備份,存於網際網路檔案館)
- BinaryPListParser.java[永久失效連結] from Quaqua[永久失效連結] project, which is listed as using a variant of the BSD licenses.
第三方編輯工具
- PlistEdit, a general property list editor
- PlistEdit Pro (頁面存檔備份,存於網際網路檔案館), a general property list editor
- PrefEdit (頁面存檔備份,存於網際網路檔案館), specializing in editing preference plists
- Property List Tools, an Applescript scripting addition for manipulating plists
- Pledit, a general property list editor for Microsoft Windows