속성 리스트
Property list파일 이름 확장자 | .plist |
---|---|
인터넷 미디어 유형 | application/x-plist |
Uniform Type Identifier(UTI; 균일 유형 식별자) | com.apple.syslog-list |
개발자 | Apple Computer 및 GNUstep, 이전 NeXT |
포맷의 종류 | 딕셔너리 오브젝트의 시리얼화. |
MacOS, iOS, NeXTSTEP 및 GNUstep 프로그래밍 프레임워크에서 속성 목록 파일은 직렬화된 개체를 저장하는 파일입니다.속성 목록 파일에서 파일 이름 확장자를 사용합니다. .plist
p-list 파일이라고도 합니다.
속성 목록 파일은 종종 사용자의 설정을 저장하는 데 사용됩니다.또한 번들 및 응용 프로그램에 대한 정보를 저장하는 데도 사용됩니다. 번들 및 응용 프로그램은 이전 Mac OS의 리소스 포크가 제공한 작업입니다.
속성 리스트는 개발을 위한 현지화 문자열에도 사용됩니다.이 파일들은.strings
또는.stringsdict
내선 번호전자는 중괄호 없이 하나의 사전만 포함하는 "축소된" 구식 플리스트이며(propertyListFromStringsFileFormat [1]참조), 후자는 완전한 플리스트입니다.Xcode는 또한.pbxproj
프로젝트 파일로 사용되는 이전 스타일 플라이스트의 확장자.
표현
속성 리스트로 표시되는 데이터는 다소 추상적이기 때문에 기본 파일 형식을 여러 가지 방법으로 구현할 수 있습니다.즉, NeXTSTEP은 속성 목록을 나타내기 위해 하나의 형식을 사용했으며, 후속 GNUstep 및 macOS 프레임워크는 다른 형식을 도입했습니다.
NextSTEP
NextSTEP에서는 속성 목록은 사람이 읽을 수 있고 손으로 편집할 수 있도록 설계되었으며 프로그래밍 언어와 유사한 구문에서 ASCII로 직렬화되었습니다.이 형식은 OPENSTEP에서 사용되었습니다.
- 문자열은 C 리터럴 스타일로 표시됩니다.
"This is a plist string\n"
; 따옴표로 둘러싸지 않은 단순한 문자열은 영숫자와 _$+/:. 중 하나로 구성되어 있는 한 허용됩니다. - 이진 데이터는 다음과 같이 표시됩니다.
< [hexadecimal codes in ASCII] >
. 쌍으로 구성된 16진수 코드 사이의 공백 및 코멘트는 무시됩니다. - 어레이는 다음과 같이 표시됩니다.
( "1", "2", "3" )
. 쉼표는 사용할 수 있습니다. - 사전은 다음과 같이 표시됩니다.
{ "key" = "value"; ... }
. 왼쪽은 문자열이어야 하지만 따옴표로 묶지 않을 수 있습니다. - 코멘트는 다음과 같이 허용됩니다.
/* This is a comment */
그리고.// This is a line comment
. - C와 마찬가지로 공백은 일반적으로 구문에서 중요하지 않습니다.값 문은 세미콜론으로 끝납니다.
원래 NeXT 속성 목록 형식의 한 가지 제한 사항은 NSValue(숫자, 부울 등) 개체를 나타낼 수 없다는 것입니다.그 결과, 이러한 값은 문자열로 변환해,[2] 애플리케이션에 의해서 「퍼즐리하게」복구할 필요가 있습니다.또 다른 제한사항은 공식 8비트 부호화가 [3]정의되어 있지 않다는 것입니다.
OPENSTEP(1996)에서 도입된 기본 유틸리티는 기본 설정 도메인을 통해 명령줄에서 기본 설정(NeXTSTEP에서는 기본 설정, 따라서 이름)을 저장하기 위해 사용되는 플라이스트 파일을 조작하기 위해 사용할 수 있습니다.또한 이 유틸리티를 사용하여 임의의 플라이스트 파일을 편집할 수 있습니다.이 유틸리티는 세 개의 이전 [4]명령을 대체했습니다.
GNU 스텝
GNUstep은 NSValue 및 NSDate 데이터 유형을 나타내기 위해 추가된 NeXTSTEP 형식을 채택합니다.새로운 타입의 엔트리는 <*T...> 형식입니다.여기서 T는 1글자의 타입 코드입니다.예를 들어 부울 YES의 NSValue는 <*BY>로 표시되고 NSDate 객체는 다음과 같이 표시됩니다.<*DYYYY-MM-DD HH:MM:SS +ZZZZ>
바이너리 데이터에서는, 보다 효율적인 base64 형식을<[ b64 ... ] >로서 사용할 수도 있습니다.[5][6]대부분의 배치에서는 UTF-8을 사용하기 때문에 8비트 문제도 암묵적으로 해결됩니다.전체적으로 NSPropertyList는GNUstepFormat은 사람이 읽을 수 있는 텍스트 형식의 표현력과 콤팩트함을 Apple의 XML 형식과 동등하게 제공합니다.
GNUstep에는 NSPropertyList라는 자체 바이너리 형식도 있습니다.NS Serialization으로 구현된 GNUstepBinaryFormat.이 형식은 텍스트 형식과 같이 반복 정의되며 일부 데이터 앞에 단일 바이트 유형 마커가 있습니다.문자열 인터닝 형식은 GS 확장 should Be Compact 스위치를 [7]통해 지원됩니다.
GNU 스텝에는 2개의 상대적인 독립된 플리스트 핸들러가 있습니다.libs-core-base(CoreFoundation)의 CFPropertyList와 libs-base(Foundation Kit)의 NSPropertyList입니다.둘 다 macOS에서 사용하는 바이너리와 XML 형식을 어느 정도 지원하지만, 후자가 훨씬 더 완벽합니다.예를 들어, 2개의 GNUstep 고유의 형식은 [8]후자에서만 처리됩니다.
GNUstep은 NSPropertyList에 기반한 일련의 plist 명령줄 도구를 제공하며 여기에는 pl과 [4]defaults 버전이[9] 포함됩니다.
MacOS
macOS는 NextSTEP 형식도 읽을 수 있지만, Apple은 두 가지 새로운 형식, 즉 XML 기반과 바이너리를 위해 NextSTEP 형식을 따로 준비합니다.또한 Apple은 부분적으로 호환되는 JSON 형식(NSJON Serialization)을 가지고 있습니다.
역사
Mac OS X 10.0에서는 NextSTEP 포맷이 폐지되고 새로운 XML 포맷이 도입되어 Apple에 의해 퍼블릭 DTD가 정의되었습니다.XML 형식은 비 ASC를 지원합니다.II 문자 및 NSValue 객체 저장(GNUstep의 ASCII 속성 목록 형식과 달리 Apple의 ASCII 속성 목록 형식은 [10]지원하지 않음)
그러나 XML 파일은 가장 공간 효율적인 저장 수단이 아니기 때문에 Mac OS X 10.2에서는 속성 목록 파일이 이진 파일로 저장되는 새로운 형식을 도입했습니다.Mac OS X 10.4부터는 이것이 기본 설정 파일의 기본 형식입니다.Mac OS X 10.7에서는 JSON 형식의 파일 읽기 및 쓰기 지원이 도입되었습니다.그러나 JSON과 속성 목록은 서로 완전히 호환되지 않습니다.예를 들어 속성 목록에는 JSON 형식이 지원하지 않는 기본 날짜 및 데이터 유형이 있습니다.반대로 JSON은null
값(속성 리스트는 명시적 늘을 지원하지 않음)을 지정합니다.
툴링
NextSTEP의 이전 기본 도구는 계속 사용할 수 있습니다./usr/libexec/PlistBuddy 명령어는 인터랙티브플리스트 에디터를 제공합니다.스크립트로 [11]작성할 수도 있습니다.
flutil 유틸리티(Mac OS X 10.2에서 도입)는 속성 목록의 구문을 확인하거나 속성 목록 파일을 한 형식에서 다른 형식으로 변환하는 데 사용할 수 있습니다.또한 Plist를 Objective-C 또는 Swift 객체 [12]리터럴로 변환할 수도 있습니다.Cocoa NSPropertyListSerialization이 기본인 것처럼 "구식" 입력이 필요하지만 이 유형으로 변환되지는 않습니다.(Mac OS X 10.2 이전 버전의 Cocoa NS Serializer는 구식 출력을 제공합니다.)
PL 유틸리티는 Mac OS X v10.5에서 도입되었습니다.모든 입력을 받아 "구식"[13][a] 플레이스트를 생성하려고 합니다.GNUstep 버전과 마찬가지로 Plist에 있는 Foundation 유형의 설명 속성을 사용하는 것으로 보입니다.이 속성은 Apple이 유효한 구식 [b]Plist를 생성하도록 지정한 것입니다.
내부적인 측면에서는 Apple은 CFPropertyList로서 Core Foundation 코드로 오래된 스타일, XML 및 바이너리 형식의 오픈소스 파서를 제공하고 있습니다.단, 시스템의 모든 유틸리티와 대부분은 Obj-C Foundation Kit의 클로즈드소스 NSPropertyList 파서를 사용합니다.Swift의 재실장은 오픈소스이지만 동일하다고 보증할 수는 없습니다.
포맷
XML 및 JSON 속성 목록은 모든 텍스트 편집기에서 수동으로 편집할 수 있습니다.또한 Apple은 JSON이 아닌 바이너리 또는 XML로 포맷된 플레이스트를 처리할 수 있는 계층 뷰어/에디터에서 속성 목록을 편집할 수 있도록 Xcode를 지원합니다.Mac OS X 10.4에서 Apple은 System Events 응용 프로그램을 통해 속성 목록 파일을 읽기 위한 AppleScript 인터페이스를 제공합니다.Mac OS X 10.5에서 Apple은 속성 목록 파일 편집, 생성 및 쓰기를 위한 AppleScript 인터페이스도 제공합니다.[14]
XML 형식의 경우 태그, 관련 Foundation 클래스 및 CoreFoundation 유형 및 데이터 저장소 형식은 다음과 같습니다.
기초 클래스 | Core Foundation 유형 | XML 태그 | 저장소 형식 |
---|---|---|---|
동작하지 않다 | CFString | <문자열> | UTF-8 부호화 문자열 |
NS넘버 | CF넘버 | <real>, <real>, <real> | 10진수 문자열.실수에 지수를 포함하거나 Infinity(inf) 또는 NaN(nan)을 포함할 수 있습니다. |
NS넘버 | CFBoolan | <true/> <false/> | 데이터 없음(태그만) |
NSDate | CFDate | <날짜> | ISO 8601 형식 문자열 |
NSData | CFData | <데이터> | Base64 부호화 데이터 |
NSAray | CFAray | <어레이> | 임의의 수의 하위 요소를 포함할 수 있습니다.비워둘 수 있습니다. |
NSDirectionary | CFDictionary | <blocks> | <key> 태그와 plist 요소 태그를 번갈아 사용합니다.비워둘 수 있습니다. |
바이너리 파일 형식은 Core Foundation C 코드 소스 파일(CF/CFBinary)의 코멘트 블록에 기재되어 있습니다.PList.c)는 Apple의 Foundation [15]라이브러리에 바이너리 플라이스트의 오픈 소스 구현을 위한 것입니다.Apple은 plist(5) 매뉴얼 페이지 설명서에서 [16]구현이 불투명하다고 설명하며, 이는 포맷에 대한 의존이 권장되지 않음을 의미합니다.바이너리 파일 형식에서 매직 번호(유효한 플리스트 파일임을 나타내는 파일의 처음 몇 바이트)는 텍스트 bplist이고, 그 뒤에 포맷 버전을 나타내는2 바이트가 있습니다.
이진 파일은 XML 또는 JSON 파일 형식으로 캡처할 수 없는 일부 정보를 저장할 수 있습니다.배열, 세트 및 사전 바이너리 유형은 포인터(objref 및 keyref 항목)로 구성되며 이 포인터는 파일 내의 객체 테이블에 인덱스를 만듭니다.즉, 바이너리 플레이스트는 예를 들어 파일로 직렬화된 별도의 배열과 사전 모두 동일한 데이터 요소가 저장되어 있다는 사실을 캡처할 수 있습니다.이것은 XML 파일에 캡처할 수 없습니다.이러한 바이너리 파일을 변환하면 데이터 요소의 복사본이 XML 파일에 배치됩니다.또한 바이너리 파일에는 시리얼화 시 데이터 항목을 식별하는 데 사용되는 UID 유형이 있습니다.C 코드 소스 파일에서 가져온 데이터를 저장할 수 있는 전체 목록은 다음과 같습니다.
기초 클래스 | Core Foundation 유형 | 오브젝트 타입 | 마커 바이트 | 부호화된 데이터 |
---|---|---|---|---|
제로 | 제로 | 특수한 순서(v"1?"+) | 0000 0000 | 없음 |
NS넘버 | CFBoolan | 부울 | 0000 1000 (false) 0000 1001(참) | 없음 |
NSURL | CFURL | url (v"1?"+) | 0000 1100(기본 문자열) 0000 1101 (문자열) | string : 재귀 부호화 URL 문자열(string object 형식 등)"; base string: 동일하지만 먼저 부호화된 base URL. |
하지 않다 | CFUID | uuid(v"1?"+) | 0000 1110 | 16 바이트의 UUID |
채우다 | 0000 1111 | 아무것도 아니다 - 그냥 패딩 | ||
NS넘버 | CF넘버 | 인트 | 0001nnn | 바이트 수는 2^nnn, 빅 엔디안 바이트(1, 2, 4, 또는 8)입니다. |
NS넘버 | CF넘버 | 진짜 | 0010nnn | 바이트 수는 2^nnnn, 빅 엔디안 바이트(4 또는 8) |
NSDate | CFDate | 날짜. | 0011 0011 | 8 바이트 플로트, 빅 엔디안 바이트, 2001년 1/1부터 초(코어 데이터 에폭) |
NSData | CFData | 데이터. | 0100 nnn [int] | nnnn은 1111이 아닌 한 바이트 수이며 그 뒤에 int 카운트가 계속됩니다. |
동작하지 않다 | CFString | 스트링 | 0101 nnn [int] | ASCII 문자열, nnn은 문자 수, 그렇지 않으면 1111, int 카운트, 바이트 수 |
동작하지 않다 | CFString | 스트링 | 0110 nnn [int] | Unicode 문자열(nnnn은 문자 수, 그렇지 않으면 1111이 int 카운트, 빅 엔디안2 바이트 uint16_t) |
동작하지 않다 | CFString | string (v"1?"+) | 0111 nnn [int] | UTF-8 문자열.nnnn은 문자수입니다.그렇지 않으면 1111이 되고 int 카운트가 되고 바이트가 됩니다. |
UID | 1000nnn | nnn+1은 빅엔디안 바이트 수(1, 2, 4, 또는 8)입니다.서명되지 않은 int. NSKeyedArchiver에서만 생성됩니다(아래 [17]참조). | ||
NSAray | CFAray | 배열 | 1010nnn [int] | objref*nnn은 카운트입니다.단, '1111'이 아닌 경우 int 카운트가 계속됩니다. |
NSOrendered Set(NSOrendered Set) | ordset (v"1?"+) | 1011 nnn [int] | objref*nnn은 카운트입니다.단, '1111'이 아닌 경우 int 카운트가 계속됩니다. | |
NSSet | CFSet | set (v"1?"+) | 1100 nnn [int] | objref*nnn은 카운트입니다.단, '1111'이 아닌 경우 int 카운트가 계속됩니다. |
NSDirectionary | CFDictionary | 받아쓰다 | 1101 nnn [int] | keyref*objref*nnnn이 카운트됩니다.단, '1111'이 아닌 경우 int count follo |
많은 타입의 v"1?"+ 노트에 주의해 주세요.즉, 마커 바이트는 "1?" 매직 번호 이상의 포맷 버전을 가진 파일에서만 찾을 수 있습니다.CFBinaryPlist 구현에서는 버전 0만 처리되기 때문에 이들을 해석하는 정확한 방법은 레거시 유형을 해석하는 방법보다 더 모호합니다.NSKeyedArchiver는 이미 이러한 정보를 캡처할 수 있기 때문에 실제로 이러한 유형은 발생하지 않습니다.
오브젝트 테이블 뒤에 오프셋 테이블이 있고, 그 뒤에 두 테이블의 크기와 위치에 대한 정보가 포함된 트레일러가 있습니다.
플레이스트에 시리얼화
속성 리스트는 임의의 오브젝트를 기술하는 데 필요한 모든 정보와 데이터 유형을 캡처하는 것은 아니기 때문에 인코딩과 디코딩의 추가 레이어가 종종 실행됩니다.OpenStep 사양은 NSObject를 NSCoding 프로토콜에 따라 직렬화하는 작업을 추상화합니다.이 프로토콜을 구현하는 클래스는 NSCoder 하위 클래스에서 다른 [18]형식으로 인스턴스를 직렬화할 수 있습니다.오브젝트를 플레이스트에 시리얼화하기 위한 코더는 주로 다음 두 가지가 있습니다.
- NSArchiver: 객체를 태그 부착 구조처럼 바이너리 데이터 블록으로 변환합니다.이 클래스는 OpenStep의 일부이지만 구체적인 형식은 정의되지 않았습니다.실제로는 오브젝트를 파일로 시리얼화(플리스트 건너뛰기)하거나 데이터를 플리스트에 삽입하기 위해 사용할 수 있습니다.그것은 쓰여진 순서대로 읽고 써야 한다.NSKeyedArchiver의 도입은 NSKeyedArchiver의 사용을 권장하지 않습니다.
- NSKeyedArchiver는 Mac OS X 10.2에서 도입되어 개체를 NSDictionary로 변환합니다.프로그래머를 위한 이 포맷의 주요 개선점은 고정된 순서가 아니라 문자열 키로 멤버에 액세스한다는 것입니다.내부적으로 $objects라는 객체 테이블 배열을 사전에 저장함으로써 바이너리 플리스트 형식을 다소 재현합니다.클래스 정보를 포함한 다른 모든 것은 UID 포인터에 의해 참조됩니다.dict 아래의 $top 엔트리는 프로그래머가 [17]인코딩하려는 최상위 개체를 가리킵니다.
무엇보다도, 아카이브를 사용하면 플리스트 포맷 자체를 변경하지 않고 새로운 데이터 타입을 부호화할 수 있으며, 이는 애플이 NSSets나 null 값 등을 부호화하는 데 선호되는 방법입니다.형식 해석은 다소 어렵습니다.플라이스트가 지원해야 할 클래스도 있기 때문입니다.오브젝트 테이블이 있는 바이너리 형식과 마찬가지로 NSKidedArchiver에서 순환 참조를 작성할 수 있습니다.XML에는 UID 데이터 유형이 없으므로 정수는 사전에 "CF$UID"[19] 키 아래에 저장됩니다.
Apple은 Swift Corelibs Foundation에 오픈 소스 NSKeyedArchiver를 게시합니다. 클로즈드 소스 Apple Foundation과 마찬가지로 출력 형식을 이진 및 XML로만 제한합니다.또,[20] 시리얼화의 결과를 나타내는 테스트 케이스도 있습니다.또한 GNUstep에는 호환성이 있는 구현이 있어 출력 [21]포맷을 제한하지 않습니다.
패스 언어
XPath가 XML에서 사용하는 것과 같이 속성 목록에 대해 표준화된 단일 경로 언어가 없지만 다양한 프로그램에서 사용되는 비공식 규칙이 있습니다.
- 점 구문 버전은 Apple의 flutil의 keypath 인수에 있습니다.그것은 에서 유래한 것으로 보인다.
(id) -[NSObject(NSKeyValueCoding) valueForKeyPath:]
를 클릭합니다.[12] - PlistBuddy에서는 다른 형식이 사용되며 인덱싱에 [11]콜론 구문이 사용됩니다.
두 형식 모두 구분 문자가 포함된 키를 표현할 수 없습니다.
기타 플랫폼
창문들
iOS 및 MacOS를 포함한 Apple 또는 Darwin 시스템에서 가장 잘 알려져 있지만, iTunes[22] 또는[23] Safari와 같은 Apple 소프트웨어를 설치할 때 Windows 컴퓨터에도 plist 파일이 있습니다.Windows 에서는, 통상, 파일은 바이너리 [24]파일입니다만, 일부의 애플리케이션은 다른 형식의 PLIST 파일을 생성할 수 있습니다.
Windows 에서는, Apple plist 파일은, 유저의 홈 디렉토리의 %USER PROFILE%\AppData\Roaming\Apple Computer 에 보존됩니다.일반적으로 윈도우즈의 이러한 목록 파일은 윈도우즈 레지스트리를 사용하지 않고 기본 설정 및 기타 정보를 저장합니다.
Windows에서 PLIST 파일을 편집하는 옵션은 MacOS에서처럼 광범위하지 않습니다.파일이 XML 또는 JSON 형식인 경우 주의하여 Notepad++와 같은 텍스트 편집기를 사용할 수 있습니다.애플은 플루틸을 출하한다.exe는 "Apple Application Support" 패키지(iTunes의 일부)에 포함되어 있으며 macOS와 동일합니다.
넷BSD
2006년에 도입되어 NetBSD#4.0(2007)과 함께 처음 출시된 Proplib 라이브러리는 커널과 사용자 랜드 간의 데이터 시리얼화에 사용할 수 있습니다.XML plist [25]언어의 일부를 구현합니다.
proplib의 샘플 사용자 중 하나는 시스템모니터링을 위한 sysmon envsys 프레임워크의 두 번째 리비전입니다
NetBSD의 proplib 라이브러리도 2010년에 DragonFly로 이식되어 DragonFly BSD #2.[26]8 이후 이용 가능합니다.
크로스 플랫폼
- Facebook의 Xcode 빌드 툴의 오픈 소스 재실장 xcbuild에는 플루틸과 플리스트 버디뿐만 아니라 플리스트 라이브러리가 포함되어 있다.이러한 크로스 플랫폼 유틸리티는 C++[27]로 기술되어 있습니다.
- Python 프로그래밍 언어에는 내장되어 있습니다.
plistlib
(Python [28]3.4 이후) Apple의 XML 또는 바이너리 형식으로 플리스트 파일을 읽고 쓰는 모듈입니다.Propertree는 [29]이 라이브러리를 사용하는 크로스 플랫폼 에디터입니다.- ccl-bplist라는 타사 라이브러리에는 NSKeyedArchiver UID를 처리하는 [19]추가 기능이 있습니다.
- 바둑에는 다음이 있습니다.
plist
다음 4가지 유형의 플레이스트를 지원하는 패키지:OpenStep 텍스트, GNUStep 텍스트, Apple XML 및 Apple Binary.또한 XML [2]및 이진 형식의 UID도 처리합니다.
「 」를 참조해 주세요.
메모들
레퍼런스
- ^ "NSString class reference: propertyListFromStringsFileFormat". GNUstep. Retrieved February 17, 2020.
- ^ a b "Package plist". godoc.org.
When Unmarshal encounters an OpenStep property list, it will enter a relaxed parsing mode: OpenStep property lists can only store plain old data as strings, so we will attempt to recover integer, floating-point, boolean and date values wherever they are necessary.
- ^ "Old-Style ASCII Property Lists". Apple Developer (Property List Programming Guide). Retrieved February 16, 2020.
- ^ a b Linux 일반 명령어 매뉴얼 –
- ^ Frith-Macdonald, Richard (2004). "NSPropertyListSerialization class documentation". GNUstep.
- ^ "Property Lists". GNUstepWiki.
- ^ "NSSerialization documentation". GNUstep. 소스 코드
- ^ "Types and Constants: NSPropertyListFormat". gnustep.org.
- ^ Linux 일반 명령어 매뉴얼 –
- ^ "appleexaminer.com: "PLIST files"". Archived from the original on February 19, 2014. Retrieved February 27, 2014.
- ^ a b Darwin 및 MacOS 시스템 매니저 매뉴얼 –
- ^ a b Darwin 및 macOS 일반 명령어 매뉴얼 –
- ^ Darwin 및 macOS 일반 명령어 매뉴얼 –
- ^ "AppleScript: Property Lists". April 24, 2009. Archived from the original on April 24, 2009.
- ^ a b "CF/CFBinaryPList.c". Apple Open Source. Retrieved January 6, 2020.
- ^ Darwin 및 macOS 파일 형식 설명서 –
- ^ a b Caithness, Alex (April 4, 2012). "Geek post: NSKeyedArchiver files – what are they, and how can I use them?". Digital Investigation.
The CF$UID data type in Listing 2 is a dictionary with a single key ("CF$UID") which is followed by an integer number (this layout is what you will see when the property list is represented in XML; in the raw binary format the "UID" data type is a separate entity which doesn't require the dictionary structure). These data types represent a reference to another entity in the "$objects" array. The number of the CF$UID gives the position of the array.
- ^ "NSCoder.html". OpenStep specification.
- ^ a b CCLForensics Group (January 15, 2020). "cclgroupltd/ccl-bplist". GitHub.
- ^ "apple/swift-corelibs-foundation: NSKeyedArchiver.swift". GitHub. December 14, 2021. 테스트
- ^ "NSKeyedArchiver documentation". GNUstep documentation. Retrieved February 23, 2020. 소스 코드
- ^ "iTunes Backup - The iPhone Wiki". www.theiphonewiki.com.
- ^ "How does the Apple Safari web-browser store its settings on Windows?". Super User.
- ^ "GitHub - microsoft/NSPlist: NSPlist". May 3, 2019 – via GitHub.
- ^ Jason R. Thorpe. "proplib — property container object library". NetBSD.
- ^ Jason R. Thorpe. "proplib — property container object library". DragonFly BSD.
- "proplib -- property container object library". DragonFly On-Line Manual Pages.
- ^ "facebook/xcbuild/Libraries/plist". GitHub. Retrieved February 17, 2020.
- ^ "plistlib — Generate and parse Mac OS X .plist files". Python 3 documentation. Retrieved January 6, 2020.
- ^ "corpnewt/ProperTree: Cross platform GUI plist editor written in python". GitHub. February 17, 2020. Retrieved February 17, 2020.
외부 링크
- developer.apple.com에 있는 plist(5) 매뉴얼 페이지
- Excel 테이블에서 Plist 파일을 생성하기 위한 Excel 애드인
- 다양한 Plist 형식을 읽고 쓸 수 있는 Java API - Android와 호환
- GNU 스텝플리스트의 EBNF 문법