试图从html中提取tabledata

试图从html中提取tabledata,html,iphone,ios,objective-c,ipad,Html,Iphone,Ios,Objective C,Ipad,基本上,我需要从这个html文件解析td(表数据)。我需要获得正确的xpath。我使用raywenderlich作为这个任务的模型,下面是我到目前为止的代码 NSURL *tutorialsUrl = [NSURL URLWithString:@"http://example.com/events]; NSData *tutorialsHtmlData = [NSData dataWithContentsOfURL:tutorialsUrl]; // 2 TFHpple *tutorial

基本上,我需要从这个html文件解析td(表数据)。我需要获得正确的xpath。我使用raywenderlich作为这个任务的模型,下面是我到目前为止的代码

  NSURL *tutorialsUrl = [NSURL URLWithString:@"http://example.com/events];
NSData *tutorialsHtmlData = [NSData dataWithContentsOfURL:tutorialsUrl];

// 2
TFHpple *tutorialsParser = [TFHpple hppleWithHTMLData:tutorialsHtmlData];

// 3

NSString *tutorialsXpathQueryString = @"This is where I need to enter my xpath to rerieve the table data";
NSArray *tutorialsNodes = [tutorialsParser searchWithXPathQuery:tutorialsXpathQueryString];
由于firebug,我有了这个元素的html路径,我将在下面发布

  /<html lang="en">/<body>/div id="page" class="container">/<div class="span-19">/<div id="content">/<div>/<table id=yw0 class="detail-view">/<tbody>/<tr class="even">/<td>moo</td>/

首先,您需要获取子字符串,其中每个子字符串包含一个需要提取的元素:

    NSArray *split = [text componentsSeparatedByString:@"<td>"];
NSArray*split=[text componentsSeparatedByString:@”“;
在数组“split”中,第一个对象不包含任何您想要的内容,所以您将不再使用它。现在,对于该数组中的每个子字符串(第一个除外),您需要搜索带有“/td”标记的子字符串:

NSRange range=[string rangeOfString:@”“;
然后移除它和它后面的所有东西:

    - (NSString *)substringToIndex:(NSUInteger)anIndex //you will get index by searching for "</td>" as mentioned
-(NSString*)substringToIndex:(nsinteger)索引//您将通过搜索“”获得索引,如前所述
编辑:

另一种可能是使用componentsSeparatedByString,而不是第二步和第三步来表示所提到的标记,并且在每个数组的第一项中,您将拥有所需的文本

编辑2:(全部代码)

NSString*originalText=@///div id=”“page“class=”“container”“>/////moo1moo2/”;
NSArray*separatedParts=[原始文本组件由字符串分隔:@”“;
NSMutableArray*arrayOfResults=[[NSMutableArray alloc]init];
对于(int i=1;i

我稍微修改了原始文本,以表明它确实适用于包含更多项的表

我不想给您带来太多麻烦,但您能告诉我这在我的代码中是如何工作的吗?我有点困惑,但你似乎对此非常了解。我已经编辑了我的答案。您只需要将NSData转换为NSString,并使用此字符串而不是我的原始文本
    NSRange range = [string rangeOfString:@"</td>"];
    - (NSString *)substringToIndex:(NSUInteger)anIndex //you will get index by searching for "</td>" as mentioned
    NSString* originalText = @"  /<html lang=""en"">/<body>/div id=""page"" class=""container"">/<div class=""span-19"">/<div id=""content"">/<div>/<table id=yw0 class=""detail-view"">/<tbody>/<tr class=""even"">/<td>moo1</td><td>moo2</td>/";
    NSArray* separatedParts = [originalText componentsSeparatedByString:@"<td>"];
    NSMutableArray* arrayOfResults = [[NSMutableArray alloc] init];
    for (int i = 1; i < separatedParts.count; i++) {
           NSRange range = [[separatedParts objectAtIndex:i] rangeOfString:@"</td>"];
           NSString *partialResult = [[separatedParts objectAtIndex:i] substringToIndex:range.location];        
           [arrayOfResults addObject:partialResult];
    }