Как разобрать документ RDF в iOS - PullRequest
1 голос
/ 08 февраля 2012

Я пытаюсь разобрать канал RDF. Я не могу найти документацию о том, как сделать это в цели c. У меня есть код для разбора каналов RSS и Atom (указан ниже), я пытаюсь найти что-то похожее, что будет работать для канала RDF.

- (void)parseRss:(GDataXMLElement *)rootElement entries:(NSMutableArray *)entries {

NSArray *channels = [rootElement elementsForName:@"channel"];
for (GDataXMLElement *channel in channels) {            

    NSString *blogTitle = [channel valueForChild:@"title"];                    

    NSArray *items = [channel elementsForName:@"item"];
    for (GDataXMLElement *item in items) {

        NSString *articleTitle = [item valueForChild:@"title"];
        NSString *articleUrl = [item valueForChild:@"link"];            
        NSString *articleDateString = [item valueForChild:@"pubDate"];        
        NSDate *articleDate = nil;

        RSSEntry *entry = [[RSSEntry alloc] initWithBlogTitle:blogTitle 
                                                  articleTitle:articleTitle 
                                                    articleUrl:articleUrl 
                                                   articleDate:articleDate
                                               articleImageUrl:@"test"]; 
        [entries addObject:entry];

    }      
}

}

- (void)parseAtom:(GDataXMLElement *)rootElement entries:(NSMutableArray *)entries {

NSString *blogTitle = [rootElement valueForChild:@"title"];                    

NSArray *items = [rootElement elementsForName:@"entry"];
for (GDataXMLElement *item in items) {

    NSString *articleTitle = [item valueForChild:@"title"];
    NSString *articleUrl = nil;
    NSArray *links = [item elementsForName:@"link"];        
    for(GDataXMLElement *link in links) {
        NSString *rel = [[link attributeForName:@"rel"] stringValue];
        NSString *type = [[link attributeForName:@"type"] stringValue]; 
        if ([rel compare:@"alternate"] == NSOrderedSame && 
            [type compare:@"text/html"] == NSOrderedSame) {
            articleUrl = [[link attributeForName:@"href"] stringValue];
        }
    }

    NSString *articleDateString = [item valueForChild:@"updated"];        
    NSDate *articleDate = nil;

    RSSEntry *entry = [[RSSEntry alloc] initWithBlogTitle:blogTitle 
                                              articleTitle:articleTitle 
                                                articleUrl:articleUrl 
                                               articleDate:articleDate
                                           articleImageUrl:@"test"];
    [entries addObject:entry];

}      

}

- (void)parseFeed:(GDataXMLElement *)rootElement entries:(NSMutableArray *)entries {    
if ([rootElement.name compare:@"rss"] == NSOrderedSame) {
    [self parseRss:rootElement entries:entries];
} else if ([rootElement.name compare:@"feed"] == NSOrderedSame) {                       
    [self parseAtom:rootElement entries:entries];
} else {
    NSLog(@"Unsupported root element: %@", rootElement.name);
}    
}

1 Ответ

0 голосов
/ 12 марта 2012

Попробуйте использовать библиотеку синтаксического анализатора Raptor RDF Вы можете найти ссылку для скачивания здесь: http://www.downloadplex.com/Mac/Development/Components-Libraries/raptor-rdf-parser-for-mac_224150.html

Удачи:)

...