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

本文讲述了在维护一个2012年的老项目时遇到的XML数据解析问题,详细介绍了如何通过调试定位到问题所在,并最终解决了因数据格式错误导致的解析失败。

上午在维护一个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达范德萨发的";

    if (htmlCode != nil) {

        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;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值