解析HTML iPhone

问题描述

| 我在服务器上有一个.html文件,我需要从中解析信息。没什么大不了的
<html>
<body>

<p> some text </p>
<p> some other text </p>

</body>
</html>
有没有一种方法可以将文本作为单独的对象放在数组中的所有“ 1”标签中,因此可以在UITableView中显示它们?     

解决方法

        您可以使用libxml解析它,这是我为您编写的示例:
#import <Foundation/Foundation.h>
#import <libxml/HTMLTree.h>
#import <libxml/HTMLparser.h>
#import <libxml/xpath.h>

@interface NSString(HTMLParser)
- (NSArray *)resultWithXPath:(NSString *)xpath;
@end

@implementation NSString(HTMLParser)

- (NSArray *)resultWithXPath:(NSString *)xpath
{
  htmlDocPtr doc = htmlParseDoc((xmlChar *)[[self dataUsingEncoding:NSUTF8StringEncoding] bytes],\"UTF-8\");
  xmlXPathContextPtr context = xmlXPathNewContext(doc);
  xmlXPathObjectPtr xpathobj = xmlXPathEvalExpression(BAD_CAST [xpath UTF8String],context);
  xmlNodeSetPtr nodeset = xpathobj->nodesetval;
  if (xmlXPathNodeSetIsEmpty(nodeset))
    return nil;

  NSMutableArray *result = [[NSMutableArray alloc] initWithCapacity:nodeset->nodeNr];

  for (int i=0; i<nodeset->nodeNr; i++){
    xmlNodePtr node = nodeset->nodeTab[i];
    [result addObject:[NSString stringWithCString:(char *)xmlNodeGetContent(node) encoding:NSUTF8StringEncoding]];
  }

  xmlXPathFreeObject(xpathobj);
  xmlXPathFreeContext(context);
  xmlFreeDoc(doc);

  return [result autorelease];
}

@end

int main (int argc,const char * argv[])
{
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

  NSString *html = @\"<html>\\
  <body>\\
  <p> some text </p>\\
  <p> some other text </p>\\
  </body>\\
  </html>\";

  NSArray *result = [html resultWithXPath:@\"//p\"];
  NSLog(@\"result: %@\",result);
  [pool release];

  return 0;
}
    ,        我是否建议您只在Web服务器上保留静态JSON文件,而不是鼓励您找出如何最好地解析HTML的方法?有许多可用于iOS的JSON解析器库,这些库可让您获取所需的数据。 这样做的副作用是,您将在下载中使用较少的带宽,解析速度更快,并且结果代码对数据有效负载的更改不那么脆弱。     ,        在tableViewCell中使用UIwebView。或者,我建议使用three20 Framework的TTStyleLabel。它将显示正确解析的html。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...