NSXMLParser не будет читать XML-фид - PullRequest
0 голосов
/ 17 декабря 2011

Я пытаюсь проанализировать этот XML-файл: http://www.ep.samico.dk/data2.xml Но NSXMLParser возвращает ошибку (ошибка домена 5) Я думаю, это из-за структуры файла, потому что, когда я пытаюсь разобрать файл следующим образом: http://www.ep.samico.dk/data.xml, он работает без проблем. Может кто-нибудь сказать мне, как это сделать по-другому?

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
                                    namespaceURI:(NSString *)namespaceURI
                                   qualifiedName:(NSString *)qName
                                      attributes:(NSDictionary *)attributeDict {

NSLog(@"Started parsing %@", elementName);
}

Ответы [ 2 ]

0 голосов
/ 17 декабря 2011

Код ошибки 5 в NSXMLParserErrorDomain домене ошибок: NSXMLParserPrematureDocumentEndError.Эта ошибка означает, что данные XML являются неполными, и обычно это происходит потому, что проанализированные данные пусты или nil.

Я думаю, вам следует проверить, как данные загружаются.Вероятно, в URL-соединении возникнет ошибка.

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.ep.samico.dk/data2.xml"]];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {

    if ( error )
        NSLog(@"URL error: %@", error);
    else
    {
        NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
        parser.delegate = self;
        if ( ! [parser parse] )
            NSLog(@"Parser error: %@", parser.parserError);
    }
}];
0 голосов
/ 17 декабря 2011

ваша ссылка содержит теги CDDATA ..

Я считаю, что вам нужно обрабатывать CDDATA отдельно.Вы должны также реализовать этот делегат и обрабатывать данные там.

- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
...