【问题标题】:Objective-C: Parsing a non-xml websiteObjective-C:解析非 xml 网站
【发布时间】:2011-09-08 03:54:30
【问题描述】:

我想开发一个非常简单的“巴士时刻表”应用程序,它可以加载特定的 URL,并可以使用 HTML 来计算巴士号码、路线和预计时间。不幸的是,这是一个非常简单的网站,因此数据分布在 TD 和 DIV 字段中,而不是在 xml 中。

谁能提供一些关于从哪里开始的指示?我已经查看了 NSURL、NSURLConnection 等,并且能够下载 HTML 文件的内容,但我不确定下一步该做什么。

非常感谢。

【问题讨论】:

    标签: iphone objective-c html-parsing


    【解决方案1】:

    许多方法来完成这项任务。最终,您将希望检索除 raw html 之外的易于处理的格式。这是一种方法:

    我建议编写一个服务器端脚本,将 html 转换为易于消化的格式,例如 JSON。

    如果您有 php 经验,您可以编写一个脚本/网络服务来获取所需的元素并将内容放在关联数组中。将脚本放在您的服务器上,让您的应用程序在准备好检索信息时调用 Web 服务 URL。

    最后,将信息作为 JSON 对象返回,并将 JSON 解析到您的应用中。

    <?php
        //parse html into the $array variable.
        $array = json_encode($array);
        echo $array;
    ?>
    

    我建议使用 SBJSON 库来解析 JSON 对象:看看SBJSON

    通过调用脚本 URL 来发起你的 NSURL 请求。

        NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.yoursite/script.php"]];
    

    如果请求成功,解析生成的JSON:(假设使用SBJSON库)

    -(void)connectionDidFinishLoading:(NSURLConnection *)connection {
    [connection release];
    
    NSString *responseString = [[NSString alloc] initWithData: responseData encoding: NSUTF8StringEncoding];
    [responseData release];
    
    NSError *error;
    SBJSON *json = [[[SBJSON alloc] init]autorelease];
    NSDictionary *busData = [json objectWithString:responseString error: &error];
    //busData contains bus data that you formatted...
    

    请注意,这是假设您要将数据添加到字典中,然后适当地显示它。我认为这仅仅是一个 sn-p,用于以您想要的方式格式化数据。解析应用程序中的所有 html 可能很困难,这就是为什么我提倡首先将数据格式化为 JSON。如果您决定走 XML 路线,那么还有几个 XML 解析器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-25
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多