OAI-PMH Objective-C 收割器是一个基于 OAI-PMH 协议 的 Objective C 库/包装器。开放存档初始化协议 (OAI-PMH) 是一种低门槛的互操作机制。数据提供者是暴露结构化元数据的存储库。服务提供者或元数据收割机(如本例)随后通过 OAI-PMH 发起 OAI-PMH 服务请求以收割这些元数据。OAI-PMH 是一套在 HTTP 中调用的六个动词或服务。
1) 在您的机器上下载或克隆此项目
2) 将文件夹 OAIHarvester 复制并粘贴到您的项目中,像往常一样将文件夹拖到 XCode 项目中
3) 在您的项目的前编译头文件(.pch 扩展名)中添加以下行
#import "TouchXML.h"
#define BASE_NAMESPACE @"http://www.openarchives.org/OAI/2.0/"
4) 启用 libxml2 库
/usr/include/libxml2
添加到其中-lxml2
5) 您现在可以使用此库了
实例化一个新的收割器
OAIHarvester *harvester = [[OAIHarvester alloc] initWithBaseURL:@"在此处放置您的存储库的 OAI 基础 URL"];
识别实例已准备好供您使用
NSLog(@"repo name = %@", harvester.identify.repositoryName);
NSLog(@"baseURL = %@", harvester.identify.baseURL);
NSLog(@"granularity = %@", harvester.identify.granularity);
for (NSString *email in harvester.identify.adminEmails){
NSLog(@"admin email = %@", email);
}
for (NSString *compression in harvester.identify.compressions){
NSLog(@"compression = %@", compression);
}
元数据格式也已准备好供您使用
for (MetadataFormat *format in harvester.metadataFormats){
NSLog(@"%@: %@", format.prefix, format.namespce);
}
集合也准备好了供您使用
for (Set *set in harvester.sets){
NSLog(@"%@: %@", set.fullSpec, set.name);
}
为您的收割器定义元数据前缀和集合(后者是可选的)
harvester.metadataPrefix = @"oai_dc";
harvester.setSpec = ((Set *)[harvester.sets objectAtIndex:0]).fullSpec;
列出记录(第 1 种方式 - 使用恢复令牌)
NSArray *records = [harvester listRecordsWithResumptionToken:nil error:&error];
if (error){
NSLog(@"error = %@", [error localizedDescription]);
}
else {
if ([harvester hasNextRecords]){
NSArray *records2 = [harvester getNextRecordsWithError:&error];
Record *record = [records2 objectAtIndex:0];
NSLog(@"identifier = %@", record.recordHeader.identifier);
NSLog(@"status = %i", record.recordHeader.status);
NSLog(@"datestamp = %@", record.recordHeader.datestamp);
for (NSString *set in record.recordHeader.setSpecs){
NSLog(@"set = %@", set);
}
NSLog(@"namespace: %@", record.recordMetadata.namespce);
NSLog(@"schemaLoacation: %@", record.recordMetadata.schemaLocation);
for (MetadataElement *metadata in record.recordMetadata.metadataElements){
NSLog(@"%@: %@", metadata.name, metadata.value);
}
}
}
列出记录(第 2 种方式 - 一次性获取所有项)
NSArray *records = [harvester listAllRecords error:&error];
完整的示例可以在此处找到。这是一个开源 iOS 示例,展示如何在启用 OAI-PMH 的真实存储库中使用此库,即 Serres 公共图书馆的那个。
Konstantinos Stamatis编写的OAI-PMH ObjC Harvester采用Creative Commons Attribution-ShareAlike 3.0 Unported License许可。