我将如何从字符串中删除“&”符号。它使我的 xml 解析器失败。
我试过了
[currentParsedCharacterData setString: [currentParsedCharacterData stringByReplacingOccurrencesOfString:@"&" withString:@"and"]];
但是好像没有效果
我将如何从字符串中删除“&”符号。它使我的 xml 解析器失败。
我试过了
[currentParsedCharacterData setString: [currentParsedCharacterData stringByReplacingOccurrencesOfString:@"&" withString:@"and"]];
但是好像没有效果
实际上,这归结为您想要优雅地处理无效的 XML。XML Parser 正确地告诉您此 XML 无效,因此无法解析。假设您无法控制此 XML 内容,我建议预先解析此类常见错误,其输出将是经过清理的 XML 文档,更有可能成功。
要清理文档,它可能就像进行搜索和替换一样简单,仅对任何内容进行全面替换的问题&
是存在有效用途&
,例如&
或©
. 您最终会通过创建如下内容来修改 XML:andcopy;
您可以搜索“& 号空格”,但这不会捕获以 & 号作为最后一个字符的字符串(可能很容易处理的一种情况)。您真正要搜索的&
是没有后跟 a的事件,;
或者在以下事件之前遇到任何类型的空格的事件,;
因为分号本身就可以。
如果您需要更多功能,因为您需要检测此错误和其他错误,我建议您使用NSScanner或RegEx匹配来搜索在您的清理步骤中出现此错误和其他常见错误。XML 文件相当大的情况也很常见,因此在将它们作为内存中的字符串处理时需要小心,因为这很容易导致应用程序崩溃。将其分解为可管理的块是 NSScanner 可以做得很好的事情。
快速尝试查看NSString上的 stringByReplacingOccurrencesOfString
NSString* str = @"a & b";
[str stringByReplacingOccurrencesOfString:@"&" withString:@"and"]; // better replace by &
但是,您还应该处理其他字符,即 < >