0

问题:

我正在将 xml 文件(RSS 提要)中的一些信息解析到我正在开发的提要阅读器中。尝试使用 Safari 打开新闻 URL 时[[UIApplication sharedApplication] openURL:url]不起作用。

我怀疑xml文件本身没有做好准备。实际上,我对此感到震惊,我只是想不出办法。

细节:

该项目适用于它测试过的所有提要,只有一个特定的提要不起作用。更具体地说,解析时会给出这种 url:%0Ahttp://google.com%0A

是我正在尝试读取的 XML 文件。

我正在使用Ray Wenderlich的 RSS 阅读器教程作为工作台。

这是我正在使用的代码:

NSURL *url = [NSURL URLWithString:[entry.articleUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
if (![[UIApplication sharedApplication] openURL:url])
    NSLog(@"%@%@",@"Failed to open url:",[url description]);

得到这个:2013-03-22 12:25:57.918 myApp[426:c07] Failed to open url:%0Ahttp://google.it/index.html%0A

请注意:我测试这个项目的每一个提要(比如 20 多个)都没有带来任何麻烦。任何帮助都会有我个人的祝福,让我过上健康繁荣的生活。

4

1 回答 1

2

这与 XML 解析无关,这是关于正确的 URL。

[NSURL URLWithString:[entry.articleUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 这是非常非常错误的。

您永远不应该转义整个 URL。您应该只转义查询参数。在%0A开头和结尾是由编码换行符引起的。

在这种情况下,它们应该已经被转义了,所以只需修剪空格:

NSString* urlString = [entry articleUrl];
NSString* trimmedUrlString = [urlString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSURL *url = [NSURL URLWithString:trimmedUrlString];
于 2013-03-22T12:08:44.140 回答