Read & write plists, with code under Free, Open-source or other community licenses.
Property List Serializer by capnbishop
This looks to be a solid JS implementation of the Plist DTD, creating an in-memory heierarchy of objects. If you need a C# implementation for Unity 3D, see below.
Property List Serializer ported by Chris Danielson
PlistCS by Mark Tilton, Animetrics
Although this is framed as a Visual Studio solution it looks to be portable C# and so should work in most C# projects. I have not verified or used this library myself. If you need a C# implementation tailored for Unity 3D, see above. The ShootSoft plist editor was written using it which indicates perhaps that it works OK.
libplist originally by Jonathon Beck, now maintained by libmobiledevice.org
Mature and stable library and part of a number of Linux projects that interface with iOS devices. Written in C and easily used from C++. Reads and writes both binary and XML format files. Good test coverage. Packages available for many linux and other systems. (Side note - plistinator does not use libmobiledevice.org's implementation, but instead uses its own C++ reader/writer code for Plists).
Animetrics (authors of a C# plist implementation listed above) also have a C++ implementation with an MIT license.
Cocoa/CocoaTouch from Apple for iOS and MacOSX
For completeness here is all the code you need to read a Plist file under iOS or MacOSX using the
class from Cocoa or CocoaTouch:
NSDictionary *mygameData = [NSDictionary dictionaryWithContentsOfFile:plistFilePath];
arrayWithContentsOfFile:. For both types the
writeToFile:atomically:method can be used to serialize out the structure.
C and Python reference implementations
If you are making an Open-Source project in C or C++ using this code from Apple is not a bad option. There's instructions in the tar-ball for compiling under linux, and the examples directory includes a plist tool written against the Core Foundation lite API. The binary plist implementation includes an authoritative listing of the binary plist format. Its this algorith and spec that Plistinator's own custom-coded reader-writer code was built from - so the code also is handy as reference.
Also on the Apple Open Source site is a handy Python implementation of Plist read-write, available under the APSL license.
Python ships with MacOSX and though we haven't researched it seems likely that the Python plist implementation is supported by Apple. Reading and writing plist with Python is about as trivial as it is with Objective-C.
pl = readPlist(pathOrFile) print(pl["aKey"])
Plistinator is written using Qt 5.4 which is a powerful cross-platform C++ framework. To get the source code to Qt 5.4.2 for all platforms, click the above link, or obtain it from the Qt Company.
The LGPL Open Source license under which Qt ships with Plistinator, confers various rights to you, the user; including to recompile the Qt libraries for your platform. To do that follow the documentation shown on the Qt website.