Я разработал одно приложение для получения RSS-канала. Я получаю этот код ошибки 5 для некоторых URL, где другие работают нормально.
Я знаю, что эта ошибка означает, что xml недействителен. Но для моего приложения я не написал ни одного xml-файла самостоятельно.
Пожалуйста, скажите мне возможные причины этого и дайте мне знать решение
импорт "RootViewController.h"
@ реализация RootViewController
- (аннулируются) viewDidAppear: (BOOL) анимированный {
[супер viewDidAppear: анимированный];
if ([подсчитано историй] == 0) {
path = @"http://172.19.58.108:8080/jwplayer/JSP/Videolist.jsp";
[self parseXMLFileAtURL:path];
}
}
- (void) parseXMLFileAtURL: (NSString *) URL {
stories = [[NSMutableArray alloc]init];
NSURL *xmlURL = [NSURL URLWithString:URL];
rssParser = [[NSXMLParser alloc]initWithContentsOfURL:xmlURL];
[rssParser setDelegate:self];
[rssParser setShouldProcessNamespaces:NO];
[rssParser setShouldReportNamespacePrefixes:NO];
[rssParser setShouldResolveExternalEntities:NO];
[rssParser parse];
}
- (void) parserDidStartDocument: (NSXMLParser *) parser {
NSLog(@"Found file and started parsing");
}
- (void) парсер: (NSXMLParser *) парсер parseErrorOccurred: (NSError *) parseError {
NSString *errorString = [NSString stringWithFormat:@"Unable to download story feed from website (Error Code %i)", [parseError code]];
NSLog(@"Error parsing xml: %@", errorString);
UIAlertView *errorAlert = [[UIAlertView alloc]initWithTitle:@"Error loading content" message:errorString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
}
- (void) синтаксический анализатор: (NSXMLParser *) анализатор didStartElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualName: (NSString *) qName attribute: (NSDictionary *) attributeDict {
currentElement = [elementName copy];
if ([elementName isEqualToString:@"item"]) {
item = [[NSMutableDictionary alloc]init];
currentTitle = [[NSMutableString alloc]init];
currentDate = [[NSMutableString alloc]init];
currentSummary = [[NSMutableString alloc]init];
currentLink = [[NSMutableString alloc]init];
}
}
- (void) синтаксический анализатор: (NSXMLParser *) анализатор didEndElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualName: (NSString *) qName {
if ([elementName isEqualToString:@"item"]) {
[item setObject:currentTitle forKey:@"title"];
[item setObject:currentDate forKey:@"date"];
[item setObject:currentSummary forKey:@"summary"];
[item setObject:currentLink forKey:@"link"];
[stories addObject:[item copy]];
NSLog(@"adding story: %@", currentTitle);
}
}
- (void) парсер: (NSXMLParser *) парсер найденХарактеры: (NSString *) строка {
if ([currentElement isEqualToString:@"title"]) {
[currentTitle appendString:string];
}
else if ([currentElement isEqualToString:@"link"]) {
[currentLink appendString:string];
}
else if ([currentElement isEqualToString:@"description"]) {
[currentSummary appendString:string];
}
else if ([currentElement isEqualToString:@"pubDate"]) {
[currentDate appendString:string];
}
* *} Тысяча сорок-девять
- (void) parserDidEndDocument: (NSXMLParser *) parser {
[activityIndicator stopAnimating];
[activityIndicator removeFromSuperview];
NSLog(@"all done");
NSLog(@"stories array has %d items", [stories count]);
[newsTable reloadData];
}