1

我将如何从字符串中删除“&”符号。它使我的 xml 解析器失败。

我试过了

[currentParsedCharacterData setString: [currentParsedCharacterData stringByReplacingOccurrencesOfString:@"&" withString:@"and"]];

但是好像没有效果

4

2 回答 2

2

实际上,这归结为您想要优雅地处理无效的 XML。XML Parser 正确地告诉您此 XML 无效,因此无法解析。假设您无法控制此 XML 内容,我建议预先解析此类常见错误,其输出将是经过清理的 XML 文档,更有可能成功。

要清理文档,它可能就像进行搜索和替换一样简单,仅对任何内容进行全面替换的问题&是存在有效用途&,例如&©. 您最终会通过创建如下内容来修改 XML:andcopy;

您可以搜索“& 号空格”,但这不会捕获以 & 号作为最后一个字符的字符串(可能很容易处理的一种情况)。您真正要搜索的&是没有后跟 a的事件,;或者在以下事件之前遇到任何类型的空格的事件,;因为分号本身就可以。

如果您需要更多功能,因为您需要检测此错误和其他错误,我建议您使用NSScannerRegEx匹配来搜索在您的清理步骤中出现此错误和其他常见错误。XML 文件相当大的情况也很常见,因此在将它们作为内存中的字符串处理时需要小心,因为这很容易导致应用程序崩溃。将其分解为可管理的块是 NSScanner 可以做得很好的事情。

于 2010-02-25T15:39:46.673 回答
1

快速尝试查看NSString上的 stringByReplacingOccurrencesOfString

NSString* str = @"a & b";
[str stringByReplacingOccurrencesOfString:@"&" withString:@"and"]; // better replace by &

但是,您还应该处理其他字符,即 < >

于 2010-02-25T15:27:39.860 回答