【问题标题】:Parsing HTML <Tag> into ios将 HTML <Tag> 解析为 ios
【发布时间】:2012-12-28 12:02:08
【问题描述】:

我正在使用 Hpple 将 HTML 标记解析到 iOS 中。我能够解析 HTML 标签所在的数据

 <div id="NewsPageSubTitle">
         <p><**span** hi how are you>

使用ios代码:

NSString *tutorialsXpathQueryString = @"//div[@id='NewsPageArticle']/p/span ";
 NSArray *tutorialsNodes = [tutorialsParser searchWithXPathQuery:tutorialsXpathQueryString];

但在少数情况下我没有跨度,即 html 中的字符串由标记“p”直接访问,例如:

<div id="NewsPageSubTitle">
             <p>< hi how are you>

这里我使用ios代码为:

NSString *tutorialsXpathQueryString = @"//div[@id='NewsPageArticle']/p ";
     NSArray *tutorialsNodes = [tutorialsParser searchWithXPathQuery:tutorialsXpathQueryString];

但在这里我得到一个空白数据作为响应。

谁能告诉我如何解决这个问题?

【问题讨论】:

    标签: iphone ios html ipad


    【解决方案1】:

    因为有时 para 标记有跨度,有时没有,我建议尝试通过循环遍历子级来处理它

        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
        NSData  * data      = [NSData dataWithContentsOfFile:filePath];
        TFHpple * tutorialsParser       = [[TFHpple alloc] initWithHTMLData:data];
    
        NSString *tutorialsXpathQueryString = @"//div[@id='NewsPageSubTitle']";
        NSArray *tutorialsNodes = [tutorialsParser searchWithXPathQuery:tutorialsXpathQueryString];
    
        for (TFHppleElement * element in tutorialsNodes) {
            NSLog(@"%@", element);
            NSLog(@"%@", [element tagName]);
            NSLog(@"%@", [element attributes]);
            NSLog(@"%@", [element children]);
            for (TFHppleElement *childElement in [element children]) {
                    NSLog(@"%@", childElement);
            }
        }
    

    【讨论】:

      【解决方案2】:

      检查:https://github.com/mwaterfall/MWFeedParser

      这将为 iphone sdk 提供 HTML 解析器。

      更多帮助:

      this bloghere

      【讨论】:

        【解决方案3】:
        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"html" inDirectory:@"New Folder 2"];
        NSData  * data      = [NSData dataWithContentsOfFile:filePath];
        
        NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:filePath];
        
        NSString *htmlString = [[NSString alloc] initWithData:[readHandle readDataToEndOfFile] encoding:NSUTF8StringEncoding];
        
        
        TFHpple * Parser       = [[TFHpple alloc] initWithHTMLData:data];
        
        NSString *query = @"//p";
        
        NSArray *nodes = [Parser searchWithXPathQuery:query];
        for (TFHppleElement *item in nodes)
            {
               NSLog(@"Title : %@", item.content);
        
                    NSLog(@"URL : %@", [item.attributes valueForKey:@"href"]);
              }
        

        【讨论】:

          猜你喜欢
          • 2013-11-20
          • 1970-01-01
          • 2015-09-27
          • 2015-02-24
          • 1970-01-01
          • 2021-12-26
          • 2016-01-18
          • 2018-06-14
          • 2011-11-03
          相关资源
          最近更新 更多