1

エンクロージャ タグを使用して xml を解析しています。これどうやってするの?link、guid、title、および pubDate タグを簡単に取得して NSString に解析できますが、enclosure タグから文字列を作成しようとすると、null が返されます。

ポッドキャスト エピソードのこの部分にある URL だけが必要です。

<enclosure url="http://treymorgan.podbean.com/mf/feed/bf8mvq/Accommoditions.mp3" length="29865594" type="audio/mpeg"/>
4

2 に答える 2

1

NSXMLParser を使用している場合は、次のように url 属性を読み取ることができます (解析された URL を格納するための podcastURL というプロパティがある場合)。

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
   if ([elementName isEqualToString:@"enclosure"]) {
      self.podcastURL = [attributeDict objectForKey:@"url"];
   }
}
于 2012-07-14T20:02:18.917 に答える
0

これが上記の問題に対する直接的な答えです。私は同じことに遭遇していました。このATOM data parse with GData postのおかげでソートされました

- (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 *podcastEnclosureUrl =  nil;

            NSString *articleTitle = [item valueForChild:@"title"];

            NSArray *enclosureArray = [item elementsForName:@"enclosure"]; //this is the code for what I needed
            for (GDataXMLElement *content in enclosureArray)
            {
                NSString *podcastEnclosureUrl = [[content attributeForName:@"url"] stringValue];
                NSLog(@"URL: %@", podcastEnclosureUrl);
            }
            NSString *articleDateString = [item valueForChild:@"pubDate"];
            NSDate *articleDate = [NSDate dateFromInternetDateTimeString:articleDateString formatHint:DateFormatHintRFC822];

            RSSPodcastFeed *entry = [[RSSPodcastFeed alloc] initWithBlogTitle:blogTitle
                                                     articleTitle:articleTitle
                                                       podcastEnclosureUrl:podcastEnclosureUrl
                                                      articleDate:articleDate];
            [entries addObject:entry];

        }
    }

}
于 2013-04-23T20:38:11.253 に答える