【问题标题】:NSXMLParser wont read XML feedNSXMLParser 不会读取 XML 提要
【发布时间】:2012-01-22 17:58:38
【问题描述】:

我正在尝试解析这个 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);
}

【问题讨论】:

    标签: objective-c nsxmlparser


    【解决方案1】:

    您的参考链接包含 CDDATA 标记..

    我相信您需要单独处理 CDDATA。你也应该实现这个委托并在那里处理数据。

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

    【讨论】:

    【解决方案2】:

    NSXMLParserErrorDomain 错误域中的错误代码 5 是 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);
        }
    }];
    

    【讨论】:

    • 它不返回错误,如果我删除 if 语句它返回 URL 错误:(null)
    • 解析器是否成功解析了 XML 数据,还是仍然出现解析错误?
    • 我不确定您是否获得了预期的数据。 NSLog(@"Data (%d): %@", [data length], [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); 有什么用?
    猜你喜欢
    • 2012-02-13
    • 2019-11-13
    • 2014-09-27
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多