Реализация списка свойств (plist) в C++
Мне поручено читать файлы списков свойств Apple в приложении C++. Фокусируясь в основном на списочных файлах типа xml, указанных в OS X, которые имитируют реализацию типа xml. Реализация Apple списка их свойств описана здесь:
http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man5/plist.5.html
Мне интересно, есть ли доступные классы или библиотеки, которые уже могут читать этот тип реализации в рамках стандартного C++ (не Objective-C); в надежде найти что-то, а не кататься на своих. Есть ли какие-либо реализации с открытым исходным кодом этого доступны?
2 ответа
Файлы PList не только имитируют XML, но и представляют собой XML, включая действительные заголовки XML.
Любой читатель XML должен иметь возможность анализировать эти файлы в результате. Если вы ищете логический класс, который абстрагирует файлы, я не знаю ни одного из существующих. Учитывая документацию Apple, вы сможете написать ее самостоятельно с помощью программы чтения XML, хотя для полной совместимости потребуется некоторая работа.
Я знаю, что для начинающих уже поздно, но, может быть, это кому-то поможет
https://github.com/animetrics/PlistCpp
Это библиотека сериализации списка свойств C++ (plist) (лицензия MIT). Он поддерживает как XML, так и двоичные версии формата plist и предназначен для кроссплатформенности с минимальными зависимостями.
Это конкретная цель?
Для Windows существует грубое решение, которое состоит в использовании функций динамических библиотек iTunes для анализа plist-файлов (работа в двоичном или обычном текстовом формате).
Это код, изначально написанный для интерфейса iPod, но вы можете легко извлечь несколько интересующих вас функций.
Репозиторий находится на этой странице проекта: http://code.google.com/p/t-pot/
Найдите файл iPoTApi.h и iPoTApi.cpp, функцию TranslatePLIST
класса CiPoTApi
,
Хотелось бы, чтобы было лучшее решение, в то время, когда я пытался скомпилировать его из источников Apple, нацеленных на Windows, но это настоящий кошмар, а файлы отсутствуют. Таким образом, использование их библиотек было значительным сокращением.