我不知道如何在iPhone SDK中解析HTML页面内容?
我有一个iPhone应用程序,在这个应用程序中我需要显示HTML页面中的图像和数据。我有一个HTML页面URL,我需要从HTML页面URL获取数据。任何人都可以指导我从HTML页面解析HTML内容并在iPhone应用程序中显示吗?
你能帮帮我吗?
修改
我有一个HTML格式的网站,如http://www.example.com/mobile/403.html页面。我想为这个网站开发一个原生的iPhone应用程序。我的客户端不会在XML feed中给出响应,所以我需要使用这个站点并解析HTML内容。此页面包含许多图像,实时数据和表格。直到现在我还没有在iPhone SDK中解析HTML页面/内容。所以我需要你的帮助呢?你能帮我么?我希望与旧问题比较清楚。提前谢谢。
答案 0 :(得分:2)
您可以将图片网址添加到NSMutableArray,如下面的代码所示。
NSMutableArray *array = [[NSMutableArray alloc] init];
NSString *response = [[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"index1" ofType:@"html"] encoding:NSUTF8StringEncoding error:nil];
// NSLog(@"response == %@", response);
NSString *regexStr = @"<a href=\"([^>]*)\">";
//NSString *regexStr = @"<A HREF=\"([^>]*)\">";
NSError *error;
NSInteger i =0;
// NSInteger length =0;
while (i<[response length]) {
NSRegularExpression *testRegex = [NSRegularExpression regularExpressionWithPattern:regexStr options:NSRegularExpressionCaseInsensitive error:&error];
if( testRegex == nil ) NSLog( @"Error making regex: %@", error );
NSTextCheckingResult *result = [testRegex firstMatchInString:response options:0 range:NSMakeRange(i, [response length]-i)];
// NSLog(@"result == %@",result);
NSRange range = [result rangeAtIndex:1];
if (range.location == 0) {
break;
}
NSString * imageUrl = [response substringWithRange:range];
if ([imageUrl hasSuffix:@".jpg"] || [imageUrl hasSuffix:@".gif"] || [imageUrl hasSuffix:@".tiff"] || [imageUrl hasSuffix:@".JPG"] || [imageUrl hasSuffix:@".JPEG"] || [imageUrl hasSuffix:@".png"] || [imageUrl hasSuffix:@".PNG"] || [imageUrl hasSuffix:@".GIF"] || [imageUrl hasSuffix:@".TIFF"]) {
// NSLog(@"%@",imageUrl);
// imageUrl = [imageUrl stringByReplacingOccurrencesOfString:@"/syneye_Portfolio/" withString:@""];
[array addObject:imageUrl];
//[array retain];
}
i= range.location;
//NSLog(@"%i",range.location);
i=i+range.length;
}
答案 1 :(得分:0)
您应该通过网络框架(AFNetworking for instance)获取HTML并使用以下选项之一解析它:
stringByEvaluatingJavaScriptFromString:
答案 2 :(得分:0)
我仍然不明白你想要什么,但这是urls和html页面的可能性:
1)页面可以加载到Safari中。当然,如果用户具有URL,则用户可以执行此操作。但是本机应用程序也可以启动Safari并为Safari提供要加载的页面的URL。然而,本机应用程序无法启动Safari并为其提供要加载的实际html页面,它必须是URL。
2)本机应用程序可以使用UIWebView来a)下载并显示给定网址的html页面或:b)如果设备上存在html,则将html页面提供给UIWebView,然后UIWebView将显示它直接
3)如果打算从html中提取一些文本或一两个图像,然后显示它,然后搜索一些帖子/教程,那么你可以a)在一个隐藏的UIWebView中加载html页面并使用Javascript访问dom元素或b)如果它的xhmlt使用xml解析器来提取你正在寻找的html标签或c)看看是否有可用于html的html解析框架或d)做一个hack和string seach for直接在html中的html标记。
4)解析完整的HTML并自己显示其所有内容。除非这是一个非常简单的html,没有完整的功能集,无法处理javascript等等。你有一个庞大的团队和多年免费写下你自己的浏览器。
编辑: 你仍然在谈论解析,就好像解析与显示解析一样。
如果您只想在网址上显示http页面,请使用UIWebView。 UIWebView将解析它并显示它。您无需自己解析它。或者从您的应用程序启动Safari(但之后您将无法返回到您的应用程序)。
你说你不能使用UIWebView?为什么不?
实际上尝试解析并自己显示HTML页面会很疯狂。