0

我一直在尝试在我的 uiwebview 中显示一个 xml 文件。我试过使用 NSURLRequest 但 UIWebview 显示为空白。我可以使用下面的代码显示本地 xml。有没有办法从定义的网站而不是从本地文件中提取它,或者下载文件然后显示它?

NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"location" ofType:@"xml"];
NSData *htmlData = [NSData dataWithContentsOfFile:htmlFile];
[aWebView loadData:htmlData MIMEType:@"text/text" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];
4

3 回答 3

1

设置您的UIWebView委托并定义webView:didFailLoadWithError:– webViewDidFinishLoad:;如果您NSLog在其中放置一些跟踪(或使用调试器中断它们),您可能会了解正在发生的事情。

原则上,如果您可以显示本地文件,则可以显示来自远程服务器的相同信息。所以我认为您的服务器可能没有正确回复(并且didFail:会帮助您理解这一点)。

编辑:

mimetype 是由服务器发送的,我不知道在UIWebView获取处理它之前修改它的方法。

您可以通过以下方式轻松下载文件:

NSData *urlData = [NSData dataWithContentsOfURL:url];

然后你可以像你已经做的那样将数据传递到 web 视图中。

考虑到dataWithContentsOfURL:同步,所以它会停止你的 UI(但对于测试它是可以的)。如果一切正常,那么你可以在后台线程上运行它,就像这样:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    NSData *htmlData = [NSData dataWithContentsOfURL:url];
    dispatch_async(dispatch_get_main_queue(), ^{

       [aWebView loadData:htmlData MIMEType:@"text/text" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];

    }
}

请注意如何UIWebView通过主线程完成 XML 下载后的返回。

于 2013-07-22T15:24:50.870 回答
0

请使用以下代码从 uiwebview 中的文档目录加载本地 xml 文件

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"demo.xml"];

NSString *content = [NSString stringWithContentsOfFile:dataPath encoding:NSUTF8StringEncoding error:NULL];

NSLog(@"contenct %@",content);

[webView loadHTMLString:[NSString stringWithFormat:@"<html><body>%@</body></html>",content] baseURL:nil];
于 2014-03-14T10:48:29.500 回答
0

@sergio 方法有效。实现此目的的另一种方法是下载文件,将其存储在本地,然后加载。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *filePath = [NSString stringWithFormat:@"%@/%@", [paths objectAtIndex:0],@"index.html"];

NSURL *url = [NSURL URLWithString:@"http://yourlocation.com/file.xml"];
NSData *urlData = [NSData dataWithContentsOfURL:url];
[urlData writeToFile:filePath atomically:YES];


[aWebView loadData:urlData MIMEType:@"text/text" textEncodingName:@"UTF-8" baseURL:nil];
于 2013-07-22T16:09:55.680 回答