跳转到内容

属性列表:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
Addbot留言 | 贡献
机器人:移除6个跨语言链接,现在由维基数据d:q1050471提供。
使用DisamAssist清理消歧义链接:DTD(链接至文件类型描述)。
 
(未显示6个用户的14个中间版本)
第12行: 第12行:
| extendedto =
| extendedto =
}}
}}
在[[Mac OS X]]的[[Cocoa]],[[NeXTSTEP]]和[[GNUstep]]编程[[框架]]中,'''属性列表'''(Property List)文件是一种用来存储[[序列化]]后的[[对象 (计算机科学)|对象]]的文件。属性列表文件的[[文件扩展名]]为<tt>.plist</tt>,因此通常被称为'''plist'''文件。
在[[OS X]]的[[Cocoa]],[[NeXTSTEP]]和[[GNUstep]]编程[[框架]]中,'''属性列表'''(Property List)文件是一种用来存储[[序列化]]后的[[对象 (计算机科学)|对象]]的文件。属性列表文件的[[文件扩展名]]为<tt>.plist</tt>,因此通常被称为'''plist'''文件。


Plist文件通常用于储存用户设置,也可以用于存储[[捆绑 (计算机)|捆绑]]的信息,该功能在旧式的Mac OS中是由[[资源分支]]提供的。
Plist文件通常用于储存用户设置,也可以用于存储[[捆绑 (计算机)|捆绑]]的信息,该功能在旧式的Mac OS中是由[[资源分支]]提供的。


== 表达 ==
== 表达 ==
由于Plist中存储的数据是[[抽象]]的,其采用的[[文件格式]]可以不止一种。[[NeXTSTEP]]只使用一种格式,而稍晚的[[GNUstep]]和[[Mac OS X]]框架导入了不同的文件格式。
由于Plist中存储的数据是[[抽象]]的,其采用的[[文件格式]]可以不止一种。[[NeXTSTEP]]只使用一种格式,而稍晚的[[GNUstep]]和[[OS X]]框架导入了不同的文件格式。


=== NeXTSTEP ===
=== NeXTSTEP ===
[[NeXTSTEP]]系统中,Plist被设计为[[人类可读]]的,并可以手工修改,故采用了类似于[[编程语言]]的语法将数据序列化为ASCII数据。
[[NeXTSTEP]]系统中,Plist被设计为[[人類可讀介質|人类可读]]的,并可以手工修改,故采用了类似于[[编程语言]]的语法将数据序列化为ASCII数据。


[[字符串]]被表示为:
[[字符串]]被表示为:
第39行: 第39行:
GNUstep采用了NeXTSTEP的格式,并添加了少许特性。它支持NSValue对象(以普通ASCII码表示),支持NSDate(序列化成<tt>&lt;*DYYYY-MM-DD HH:MM:SS timezone&gt;</tt>的格式)。
GNUstep采用了NeXTSTEP的格式,并添加了少许特性。它支持NSValue对象(以普通ASCII码表示),支持NSDate(序列化成<tt>&lt;*DYYYY-MM-DD HH:MM:SS timezone&gt;</tt>的格式)。


GNUstep也可以读写[[Mac OS X]]使用的Plist格式。
GNUstep也可以读写[[OS X]]使用的Plist格式。


=== Mac OS X ===
=== Mac OS X ===
Mac OS X在支持读取NeXTSTEP格式的同时,并不鼓励使用它,而是推荐使用Apple导入的两种新格式。
Mac OS X在支持读取NeXTSTEP格式的同时,并不鼓励使用它,而是推荐使用Apple导入的两种新格式。


[[Mac OS X v10.0|Mac OS X 10.0]]中,NeXTSTEP的格式被认为是不被推荐的,并导入了一种新的[[XML]]格式,其由Apple定义的公开[[DTD]]所规范化。XML格式支持非ASCII格式,亦可存储NSValue对象。但与GNUstep的ASCII plist格式不同,Apple的NeXTSTEP格式的plist文件不支持这两种特性。
[[Mac OS X v10.0|Mac OS X 10.0]]中,NeXTSTEP的格式被认为是不被推荐的,并导入了一种新的[[XML]]格式,其由Apple定义的公开[[文件类型描述|DTD]]所规范化。XML格式支持非ASCII格式,亦可存储NSValue对象。但与GNUstep的ASCII plist格式不同,Apple的NeXTSTEP格式的plist文件不支持这两种特性。


由于XML文件在储存时不是最有空间效率的,[[Mac OS X v10.2|Mac OS X 10.2]]导入了一种新的格式,它将plist文件存储为二进制文件。从[[Mac OS X v10.4|Mac OS X 10.4]]开始,这是偏好设置文件的默认格式。
由于XML文件在储存时不是最有空间效率的,[[Mac OS X v10.2|Mac OS X 10.2]]导入了一种新的格式,它将plist文件存储为二进制文件。从[[Mac OS X v10.4|Mac OS X 10.4]]开始,这是偏好设置文件的默认格式。
第95行: 第95行:
|}
|}


<code>defaults</code>工具可以用于以[[命令行]]形式,通过程序的偏好设置域,管理用于储存偏好设置的plist文件;而[[Property List Editor]]则可以用于编辑任何plist文件(包括用于储存偏好设置的)。从[[Mac OS X v10.4|Mac OS X 10.4]]开始,Apple提供了通过System Events应用程序读写plist文件的[[AppleScript]]接口,而从[[Mac OS X v10.5|Mac OS X 10.5]]开始,Apple也提供了用于编辑,创建和写入plist文件的接口<ref>[http://www.macosxautomation.com/applescript/features/propertylists.html AppleScript:属性列表]</ref>。
<code>defaults</code>工具可以用于以[[命令行]]形式,通过程序的偏好设置域,管理用于储存偏好设置的plist文件;而[[Property List Editor]]则可以用于编辑任何plist文件(包括用于储存偏好设置的)。从[[Mac OS X v10.4|Mac OS X 10.4]]开始,Apple提供了通过System Events应用程序读写plist文件的[[AppleScript]]接口,而从[[Mac OS X v10.5|Mac OS X 10.5]]开始,Apple也提供了用于编辑,创建和写入plist文件的接口<ref>{{Cite web |url=http://www.macosxautomation.com/applescript/features/propertylists.html |title=AppleScript:属性列表 |accessdate=2010-09-24 |archive-date=2010-10-09 |archive-url=https://web.archive.org/web/20101009011128/http://www.macosxautomation.com/applescript/features/propertylists.html |dead-url=no }}</ref>。


==参考文献==
==参考文献==
第104行: 第104行:


==外部链接==
==外部链接==
* [http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/plist.5.html The plist manual page] at developer.apple.com
* [https://web.archive.org/web/20041013051557/http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/plist.5.html The plist manual page] at developer.apple.com
* [http://developer.apple.com/documentation/Cocoa/Conceptual/PropertyLists/index.html#//apple_ref/doc/uid/10000048i Property List Programming Guide for Cocoa]
* [https://web.archive.org/web/20090519020941/http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/PropertyLists/index.html#//apple_ref/doc/uid/10000048i Property List Programming Guide for Cocoa]
* [http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFPropertyLists/CFPropertyLists.html Property List Programming Topics for Core Foundation]
* [https://web.archive.org/web/20090224195637/http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFPropertyLists/CFPropertyLists.html Property List Programming Topics for Core Foundation]
* [http://www.gnustep.org/resources/documentation/Developer/Base/Reference/NSPropertyList.html NSPropertyListSerialization class documentation] from the [[GNUstep]] project
* [https://web.archive.org/web/20110519164921/http://gnustep.org/resources/documentation/Developer/Base/Reference/NSPropertyList.html NSPropertyListSerialization class documentation] from the [[GNUstep]] project
* [http://docs.sun.com/app/docs/doc/802-2112/6i63mn65o?a=view OpenStep plist API] from Sun Microsystems
* [https://web.archive.org/web/20081210064322/http://docs.sun.com/app/docs/doc/802-2112/6i63mn65o?a=view OpenStep plist API] from Sun Microsystems
* [http://commons.apache.org/configuration Apache Commons Configuration] Configuration API in Java supporting the Property List format
* [http://commons.apache.org/configuration Apache Commons Configuration] {{Wayback|url=http://commons.apache.org/configuration |date=20100924195750 }} Configuration API in Java supporting the Property List format
* [http://www.apple.com/DTDs/PropertyList-1.0.dtd Apple's Property List Document Type Definition]
* [http://www.apple.com/DTDs/PropertyList-1.0.dtd Apple's Property List Document Type Definition] {{Wayback|url=http://www.apple.com/DTDs/PropertyList-1.0.dtd |date=20100923200331 }}
* [https://quaqua.dev.java.net/source/browse/quaqua/trunk/Quaqua/src/ch/randelshofer/quaqua/util/BinaryPListParser.java?view=markup BinaryPListParser.java] from [https://quaqua.dev.java.net/ Quaqua] project, which is listed as using a variant of the [[BSD licenses]].
* [https://quaqua.dev.java.net/source/browse/quaqua/trunk/Quaqua/src/ch/randelshofer/quaqua/util/BinaryPListParser.java?view=markup BinaryPListParser.java]{{dead link|date=2017年12月 |bot=InternetArchiveBot |fix-attempted=yes }} from [https://quaqua.dev.java.net/ Quaqua]{{dead link|date=2017年12月 |bot=InternetArchiveBot |fix-attempted=yes }} project, which is listed as using a variant of the [[BSD licenses]].


=== 第三方编辑工具 ===
=== 第三方编辑工具 ===
* [http://rixstep.com/acp/plistedit PlistEdit], a general property list editor
* [http://rixstep.com/acp/plistedit PlistEdit], a general property list editor
* [http://www.fatcatsoftware.com/plisteditpro PlistEdit Pro], a general property list editor
* [http://www.fatcatsoftware.com/plisteditpro PlistEdit Pro] {{Wayback|url=http://www.fatcatsoftware.com/plisteditpro |date=20100922015945 }}, a general property list editor
* [http://www.bresink.com/osx/PrefEdit.html PrefEdit], specializing in editing preference plists
* [http://www.bresink.com/osx/PrefEdit.html PrefEdit] {{Wayback|url=http://www.bresink.com/osx/PrefEdit.html |date=20110708092453 }}, specializing in editing preference plists
* [http://www.latenightsw.com/freeware/PListTools/index.html Property List Tools], an Applescript scripting addition for manipulating plists
* [https://web.archive.org/web/20101006071131/http://www.latenightsw.com/freeware/PListTools/index.html Property List Tools], an Applescript scripting addition for manipulating plists
* [http://iphone.cazisoft.com/?p=569 Pledit], a general property list editor for [[Microsoft Windows]]
* [https://web.archive.org/web/20090126184532/http://iphone.cazisoft.com/?p=569 Pledit], a general property list editor for [[Microsoft Windows]]


{{Mac OS X}}
{{OS X}}
{{Data Exchange}}

[[Category:Mac OS X]]
[[Category:MacOS]]
[[Category:数据序列化格式]]
[[Category:数据序列化格式]]
[[Category:NeXT]]

2023年4月15日 (六) 13:48的最新版本

属性列表
扩展名
.plist
互联网媒体类型application/x-plist
开发者苹果公司GNUstep,
NeXT
格式类型序列化对象

OS XCocoaNeXTSTEPGNUstep编程框架中,属性列表(Property List)文件是一种用来存储序列化后的对象的文件。属性列表文件的文件扩展名.plist,因此通常被称为plist文件。

Plist文件通常用于储存用户设置,也可以用于存储捆绑的信息,该功能在旧式的Mac OS中是由资源分支提供的。

表达

[编辑]

由于Plist中存储的数据是抽象的,其采用的文件格式可以不止一种。NeXTSTEP只使用一种格式,而稍晚的GNUstepOS 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]

参考文献

[编辑]
  1. ^ AppleScript:属性列表. [2010-09-24]. (原始内容存档于2010-10-09). 

参见

[编辑]

外部链接

[编辑]

第三方编辑工具

[编辑]