XML解析错误,Error Domain=NSXMLParserErrorDomain Code=9 "(null)"

上午在维护一个2012年的老项目,是因为公司线上的应用,今天出现了无法显示数据的问题,找到项目源码后一看,让我深感痛恶的xml数据解析啊!( ⊙ o ⊙ )!


开断点调试:

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
    if (self.delegate && [self.delegate respondsToSelector:@selector(getSocialService_Fail:)]) {
        [self.delegate getSocialService_Fail:serviceType];
    }
}


在上面的函数中打印出的 parseError:

error: use of undeclared identifier 'elementName'

error: 1 errors parsing expression

Printing description of parseError:

Error Domain=NSXMLParserErrorDomain Code=9 "(null)" UserInfo={NSXMLParserErrorLineNumber=5, NSXMLParserErrorColumn=14, NSXMLParserErrorMessage=xmlParseCharRef: invalid xmlChar value 11



经一步步调试发现是由于xml数据中的某节点Value数据格式有误!我这里是,后台数据中节点名为“Description”的字符串内容有“异常”字符!



后跟后台人员沟通,其修改了Description字段内容后,问题得以解决。




㊗️恭喜恭喜,这下解析成功了!


另外介绍一种方法,用于过滤指定字符串。


- (NSData *)filterSpecialCharacter:(NSMutableData *)data {

    NSString *htmlCode = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    //    NSString *htmlCode = @"发发发&#xB达范德萨发的";

    NSCharacterSet *filterCharacter = [NSCharacterSet characterSetWithCharactersInString:@"&#xB"];

    htmlCode = [[htmlCode componentsSeparatedByCharactersInSet:filterCharacter] componentsJoinedByString:@""];

    NSMutableString *temp = [NSMutableString stringWithString:htmlCode];

    

    NSData *finalData = [temp dataUsingEncoding:NSUTF8StringEncoding];

    [data setData:finalData];

    

    return data;

}



猜你喜欢

转载自blog.csdn.net/jingfa1993/article/details/54599626
今日推荐