C 解析二进制PLIST
C++ Parse Binary plist
我正在编写C 的程序,该程序需要解析二进制文件。XML解析不是问题,所以我认为我可以将二进制文件转换为XML,然后解析。有没有办法在C 本地进行此操作?我知道Apple的plutil
具有此功能,但是从程序中执行它似乎是不好的练习。
我正在运行最新版本的OS X(10.9)
假设您想在Apple平台上执行此操作,则可以使用CfPropopertylistCreateFromStream,CfPropopertylistcreatewithdata或Cfpropertylistylistylistylistylistylylistylewithewithstream,它们是CoreCoruoldation框架的一部分:
:
所有这些功能都有以下参数:
格式:指定属性列表格式的常数。有关可能的值,请参见属性列表格式。
cfpropopertylistyristefromstream也具有以下参数:
流:数据包含内容的流。必须打开和配置流 - 此函数只是从流中读取字节。该流可以包含任何支持的属性列表类型(请参阅属性列表格式)。
cfproperty常数定义定义了以下内容:
enum CFPropertyListFormat {
kCFPropertyListOpenStepFormat = 1,
kCFPropertyListXMLFormat_v1_0 = 100,
kCFPropertyListBinaryFormat_v1_0 = 200
};
typedef enum CFPropertyListFormat CFPropertyListFormat;
这倾向于表明上述方法实际上可以读取二进制文件。
二进制PLIST实施细节也已由Apple开源。
Apple具有进一步的示例代码,其瘦的是:
CFDataRef resourceData;
SInt32 errorCode;
Boolean status = CFURLCreateDataAndPropertiesFromResource(
kCFAllocatorDefault, fileURL, &resourceData,
NULL, NULL, &errorCode);
if (!status) {
// Handle the error
}
// Reconstitute the dictionary using the XML data
CFErrorRef myError;
CFPropertyListRef propertyList = CFPropertyListCreateWithData(
kCFAllocatorDefault, resourceData, kCFPropertyListImmutable, NULL, &myError);
// Handle any errors
CFRelease(resourceData);
CFRelease(myError);
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 有根的二进制搜索树.保留与其父级的链接
- 多态二进制函数
- 正在读取二进制文件(is_open)
- visual在c++中将十进制数转换为二进制数
- C++十进制到二进制,如何转换
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 二进制搜索树叶数问题
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 为什么二进制搜索在我的测试中不起作用
- 重载==不适用于二进制树
- 正在尝试重载二进制搜索树分配运算符
- 在C++中将类(带有Vector成员)保存为二进制文件
- 如何从二进制文件中读取字符串
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 带有数组键C++的二进制映射
- 如何将二进制格式的 C++ 对象的 std::vector 保存到磁盘?
- 二进制数之和(使用C样式字符串)
- C 解析二进制PLIST
- NSPropertyListSerialization propertyListWithData使用二进制plist失败