首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML解析- NSXMLParserErrorDomain错误5

XML解析- NSXMLParserErrorDomain错误5
EN

Stack Overflow用户
提问于 2011-03-30 20:14:52
回答 1查看 3.9K关注 0票数 0

我正在尝试解析XML文件。它运行得很好--直到今天...

下面是我如何开始解析XML:

代码语言:javascript
复制
NSString *link = [[NSString alloc] init];
link = @"link_to_xml_file";

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:link] 
                                             cachePolicy:NSURLRequestReturnCacheDataElseLoad 
                                         timeoutInterval:30.0];

connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

下面是我如何使用接收到的数据:

代码语言:javascript
复制
- (void)connection:(NSURLConnection *)theConnection 
    didReceiveData:(NSData *)incrementalData 
{
    if (data == nil)
        data = [[NSMutableData alloc] init];

    [data appendData:incrementalData];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.plist",actual]];

    NSError *parseError = nil;
    NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLString:[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] error:&parseError];

    if (parseError != nil) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:[parseError localizedDescription] delegate:nil cancelButtonTitle:@"Zurück" otherButtonTitles:nil];
        [alert show];
        [alert release];
    } //shows an alertview with NSXMLParserErrorDomain error 5

    NSLog(@"String: %@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); //returns null

    NSLog(@"Dictionary: %@",xmlDictionary); //returns null

    NSMutableDictionary *tempDictForAddDate = [[NSMutableDictionary alloc] initWithDictionary:xmlDictionary];

    NSDateFormatter *originalDate = [[NSDateFormatter alloc] init];
    [originalDate setDateFormat:@"dd.MM.yyyy"];

    NSString *today = [originalDate stringFromDate:[NSDate date]];

    [tempDictForAddDate setObject:today forKey:@"updated"];

    [tempDictForAddDate writeToFile:filePath atomically:YES];

    self.contentList = [[tempDictForAddDate objectForKey:@"xmlObject"] objectForKey:@"event"];

    [self sortContent];
}

XML文件在我的浏览器中工作。而且每个标签都是封闭的。没有任何错误,但我从未获得文件的数据。

我希望有人能帮上忙。

mavrick3。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-30 20:20:18

您正在(明智地)使用异步url连接,但这意味着当数据传入时,您的didReceiveData委托将被多次调用,因此在您解析它的时候,它将不会完成。

您可能希望将解析移到下面的委托方法中。

代码语言:javascript
复制
- (void)connectionDidFinishLoading:(NSURLConnection *)connection

请参阅Apple's Documentation here

编辑:

正式验证XML总是一个好主意--我倾向于使用w3c工具http://www.w3schools.com/xml/xml_validator.asp

此外,当以前工作的东西停止工作时,我总是问自己,是什么改变了?文件是否不同?它是不是更大?您确定它存在于服务器上,并且您的浏览器没有使用缓存版本吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5486116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档