3

我不知道如何在 iPhone SDK 中解析 HTML 页面内容?

我有一个 iPhone 应用程序,在这个应用程序中,我需要显示 HTML 页面中的图像和数据。我有一个 HTML 页面 URL,我需要从 HTML 页面 URL 获取数据。谁能指导我从 HTML 页面解析 HTML 内容并在 iPhone 应用程序中显示?

你能帮我么?

编辑

我有一个 HTML 格式的网站,例如http://www.example.com/mobile/403.html页面。我想为这个网站开发一个原生 iPhone 应用程序。我的客户不会在 XML 提要中给出响应,所以我需要使用这个站点并解析 HTML 内容。此页面有许多图像、实时数据和表格。到目前为止,我还没有在 iPhone SDK 中解析 HTML 页面/内容。所以我需要你的帮助才能做到这一点?你能帮我么?我希望与旧问题相比很清楚。提前致谢。

4

3 回答 3

2

您可以将图像 url 添加到 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;
    }
于 2012-06-01T12:04:34.010 回答
0

您应该通过网络框架(例如 AFNetworking)获得 HTML,并使用以下选项之一对其进行解析:

  1. 自定义代码
  2. 一些 HTML 解析框架(我不知道)
  3. 在隐藏的 UIWebView 中加载 HTML 并在里面做一些 JavascriptstringByEvaluatingJavaScriptFromString:
于 2012-06-01T12:00:20.500 回答
0

我仍然不明白你想要什么,但这是 urls 和 html 页面的可能:

1) 页面可以加载到 Safari 中。当然,如果用户有 url,用户可以这样做。但本机应用程序也可以启动 Safari 并为 Safari 提供要加载的页面的 url。但是,本机应用程序无法启动 Safari 并为其提供要加载的实际 html 页面,它必须是 url。

2) 原生应用程序可以使用 UIWebView 来 a) 下载并显示给定 url 的 html 页面或: b) 如果 html 存在于设备上,则将 html 页面提供给 UIWebView,然后 UIWebView 将直接显示它。

3)如果打算只是从html中提取一些文本或一两个图像然后显示它,然后搜索一些帖子/教程然后你可以a)在隐藏的UIWebView中加载html页面并使用Javascript访问 dom 元素或 b) 如果其 xhmlt 使用 xml 解析器来提取您正在查找的 html 标记或 c) 查看是否有可用于 html 的 html 解析框架或 d) 对 html 令牌执行 hack 和字符串搜索直接在html中。

4) 自己解析完整的 HTML 并显示其所有内容。除非这是一个非常非常简单的 html,没有完整的功能集并且无法处理 javascript 等。您是否有一个庞大的团队和多年的空闲时间来编写有效地成为您自己的浏览器的东西。

编辑:您仍然在谈论解析,就好像解析与显示它一样。

如果您只想在 url 上显示 http 页面,请使用 UIWebView。UIWebView 将解析它并显示它。无需您自己解析。或者从您的应用程序启动 Safari(但之后您将无法返回您的应用程序)。

你说不能用 UIWebView?为什么不?

实际尝试自己解析和显示 HTML 页面将是疯狂的。

于 2012-06-01T14:13:29.067 回答