2012-02-14 3 views
0

моя проблема в том, что я не могу разобрать тег из XML-файла. Он возвращает нулевое значение, im тестируя его, используя NSLog с% @.Разбор содержимого xml тега

Если кто-то может указать мне решение, я был бы очень благодарен.

Вот код: BOOL обрабатывается = НЕТ; , если (currentText) {

// Remove newlines and whitespace from currentText 
    NSString *processedText = [currentText stringByRemovingNewLinesAndWhitespace]; 

    // Process 
    switch (feedType) { 
     case FeedTypeRSS: { 

      // Item 
      if (!processed) { 
       if ([currentPath isEqualToString:@"/rss/channel/item/title"]) { if (processedText.length > 0) item.title = processedText; processed = YES; } 
       else if([currentPath isEqualToString:@"/rss/channel/item/url"]) { if (processedText.length > 0) item.image = processedText; processed = YES; } 
       else if([currentPath isEqualToString:@"/rss/channel/item/category"]) { if (processedText.length > 0) item.category = processedText; processed = YES; } 
       else if ([currentPath isEqualToString:@"/rss/channel/item/link"]) { if (processedText.length > 0) item.link = processedText; processed = YES; } 
       else if ([currentPath isEqualToString:@"/rss/channel/item/guid"]) { if (processedText.length > 0) item.identifier = processedText; processed = YES; } 
       else if ([currentPath isEqualToString:@"/rss/channel/item/description"]) { if (processedText.length > 0) item.summary = processedText; processed = YES; } 
       else if ([currentPath isEqualToString:@"/rss/channel/item/content:encoded"]) { if (processedText.length > 0) item.content = processedText; processed = YES; } 
       else if ([currentPath isEqualToString:@"/rss/channel/item/pubDate"]) { if (processedText.length > 0) item.date = [NSDate dateFromInternetDateTimeString:processedText formatHint:DateFormatHintRFC822]; processed = YES; } 
       else if ([currentPath isEqualToString:@"/rss/channel/item/enclosure"]) { [self createEnclosureFromAttributes:currentElementAttributes andAddToItem:item]; processed = YES; } 
       else if ([currentPath isEqualToString:@"/rss/channel/item/dc:date"]) { if (processedText.length > 0) item.date = [NSDate dateFromInternetDateTimeString:processedText formatHint:DateFormatHintRFC3339]; processed = YES; } 
      } 

      // Info 
      if (!processed && feedParseType != ParseTypeItemsOnly) { 
       if ([currentPath isEqualToString:@"/rss/channel/title"]) { if (processedText.length > 0) info.title = processedText; processed = YES; } 
       else if([currentPath isEqualToString:@"/rss/channel/item/url"]) { if (processedText.length > 0) item.image = processedText; processed = YES; } 
       else if([currentPath isEqualToString:@"/rss/channel/item/category"]) { if (processedText.length > 0) item.category = processedText; processed = YES; } 
       else if ([currentPath isEqualToString:@"/rss/channel/description"]) { if (processedText.length > 0) info.summary = processedText; processed = YES; } 
       else if ([currentPath isEqualToString:@"/rss/channel/link"]) { if (processedText.length > 0) info.link = processedText; processed = YES; } 
      } 

      break; 
     } 
     case FeedTypeRSS1: { 

      // Item 
      if (!processed) { 
       if ([currentPath isEqualToString:@"/rdf:RDF/item/title"]) { if (processedText.length > 0) item.title = processedText; processed = YES; } 
       else if([currentPath isEqualToString:@"/rss/channel/item/url"]) { if (processedText.length > 0) item.image = processedText; processed = YES; } 
       else if([currentPath isEqualToString:@"/rss/channel/item/category"]) { if (processedText.length > 0) item.category = processedText; processed = YES; } 
       else if ([currentPath isEqualToString:@"/rdf:RDF/item/link"]) { if (processedText.length > 0) item.link = processedText; processed = YES; } 
       else if ([currentPath isEqualToString:@"/rdf:RDF/item/dc:identifier"]) { if (processedText.length > 0) item.identifier = processedText; processed = YES; } 
       else if ([currentPath isEqualToString:@"/rdf:RDF/item/description"]) { if (processedText.length > 0) item.summary = processedText; processed = YES; } 
       else if ([currentPath isEqualToString:@"/rdf:RDF/item/content:encoded"]) { if (processedText.length > 0) item.content = processedText; processed = YES; } 
       else if ([currentPath isEqualToString:@"/rdf:RDF/item/dc:date"]) { if (processedText.length > 0) item.date = [NSDate dateFromInternetDateTimeString:processedText formatHint:DateFormatHintRFC3339]; processed = YES; } 
       else if ([currentPath isEqualToString:@"/rdf:RDF/item/enc:enclosure"]) { [self createEnclosureFromAttributes:currentElementAttributes andAddToItem:item]; processed = YES; } 
      } 

вызов метода:

// Настройка внешнего вида таблицы элементов. - (UITableViewCell *) Tableview: (UITableView *) Tableview cellForRowAtIndexPath: (NSIndexPath *) indexPath {

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
} 

// Configure the cell. 
MWFeedItem *item = [itemsToDisplay objectAtIndex:indexPath.row]; 
if (item) { 
    NSLog(@"content = %@",item.content);//<-------------------------------------------Returns a NULL 
    // Process 
    NSString *itemTitle = item.title ? [item.title stringByConvertingHTMLToPlainText] : @"[No Title]"; 
    NSString *itemSummary = item.summary ? [item.summary stringByConvertingHTMLToPlainText] : @"[No Summary]"; 

    // Set 
    cell.textLabel.font = [UIFont boldSystemFontOfSize:15]; 
    cell.textLabel.text = itemTitle; 
    NSMutableString *subtitle = [NSMutableString string]; 
    if (item.date) [subtitle appendFormat:@"%@: ", [formatter stringFromDate:item.date]]; 
    [subtitle appendString:itemSummary]; 
    cell.detailTextLabel.text = subtitle; 

} 
return cell; 

}

С наилучшими пожеланиями

ответ

1

В процессе анализа каждый элемент анализатор возвращает символ пробела как ответ из-за новой строки/табуляции/возврата каретки. Если вы внедрили методы обратного вызова (делегаты) анализатора, тогда проверьте нулевые значения, и я не знаю, где вы реализовали (в том смысле, в котором метод делегирования парсера имеет это) самый первый фрагмент.

Смежные вопросы