0

こんにちは、RSS と Atom フィードを解析しています。私の質問は、< description > 内の < img > タグと < url > タグを確認するにはどうすればよいですか?

何らかのチェックがあるはずです。ありがとう。

これが私がそれらを解析する方法です:

- (NSArray *)parseFeed:(NSURL *)feedURL{
    NSError *error;
    NSData *data = [NSData dataWithContentsOfURL:feedURL];
    GDataXMLDocument *xmlParse = [[GDataXMLDocument alloc] initWithData:data error:&error];
    GDataXMLElement *rootElement = xmlParse.rootElement;
    NSArray *array = [[NSArray alloc] init];
    if ([rootElement.name compare:@"rss"] == NSOrderedSame) {
        array = [self parseRSSFeed:rootElement];
        return array;
    } else if ([rootElement.name compare:@"feed"] == NSOrderedSame) {
        array = [self parseAtomFeed:rootElement];
        return array;
    } else {
        NSLog(@"Unsupported root element: %@", rootElement.name);
        return nil;
    }
}

-(NSArray *)parseRSSFeed:(GDataXMLElement *) rootElement
{
    NSMutableArray *entries = [[NSMutableArray alloc] init];
    NSArray *channels = [rootElement elementsForName:@"channel"];
    for (GDataXMLElement *channel in channels) {
        NSArray *items = [channel elementsForName:@"item"];
        for (GDataXMLElement *item in items) {
            FeedItem *itemF = [[FeedItem alloc] init];
            itemF.title = [item valueForChild:@"title"];
            itemF.description = [item valueForChild:@"description"];
            NSLog(@"IMAGE - %@", [item valueForChild:@"img"]);
            itemF.dateString = [item valueForChild:@"pubDate"];
            itemF.link = [NSURL URLWithString:[item valueForChild:@"link"]];
            itemF.dateString = [item valueForChild:@"updated"];
            itemF.author = [item valueForChild:@"author"];
            [entries addObject:itemF];
            NSLog(@"RSS - %@", itemF.title);
        }
    }
    NSArray *RSSArray = [entries copy];
    return RSSArray;
}
-(NSArray *)parseAtomFeed:(GDataXMLElement *) rootElement
{
    NSMutableArray *entries = [[NSMutableArray alloc] init];
    NSArray *entry = [rootElement elementsForName:@"entry"];
    for (GDataXMLElement *entryElement in entry) {
        // NSArray *items = [channel elementsForName:@"item"];
        //for (GDataXMLElement *item in items) {
        FeedItem *itemF = [[FeedItem alloc] init];
        itemF.title = [entryElement valueForChild:@"title"];
        itemF.description = [entryElement valueForChild:@"summary"];
        NSArray *links = [entryElement elementsForName:@"link"];
        for (GDataXMLElement *link in links) {
            itemF.link = [NSURL URLWithString:[[link attributeForName:@"href"] stringValue]];
        }
        itemF.dateString = [entryElement valueForChild:@"updated"];
        NSArray *authors = [entryElement elementsForName:@"author"];
        for (GDataXMLElement *authorElement in authors) {
            itemF.author = [authorElement valueForChild:@"name"];
        }
        [entries addObject:itemF];
        NSLog(@"Atom - %@", itemF.title);
    }
    NSArray *atomArray = [entries copy];
    return atomArray;
}

GDataXMLParser と独自のパーサー クラスを使用してそれらを解析しています。

4

2 に答える 2

1

次のようにします。

NSString *Str=[item valueForChild:@"description"];
NSArray *tmp=[Str componentsSeparatedByString:@"<Img>"];
if([tmp count]>1){
    NSString *urlstr=[[tmp objectatindex:1] stringByReplacingOccurrencesOfString:@" </Img>" withString:@""];
}

urlstr画像の URL が含まれるようになりました。

楽しみ

于 2012-08-08T09:18:08.660 に答える
0

と思いました

itemF.description = [item valueForChild:@"description"];

ですNSString。だからcomponentsSeparatedByString、「あなたのタグ」と一緒に使うことができます。配列を返します。位置 1 の配列では、img の URL を取得します。この URL には、閉じ括弧「あなたの閉じタグ」が含まれています。「終了タグ」をスペースに置き換えます。画像のURLを取得します。

うまくいけば、これはあなたを助けるでしょう。

于 2012-08-06T12:50:21.013 に答える