2013-05-31 44 views
0

基本上我需要從這個html文件解析td(表格數據)。我需要得到正確的xpath.I使用raywenderlich作爲這個任務的模型,這裏是代碼I迄今爲止。試圖從html中拉出tabledata

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]; 

我有這個元素的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>/ 

我需要解析文本moo。任何幫助將深表謝意。

這是我從螢火蟲中得到的x路徑,但它根本不起作用。

/html/body/div/div[4]/div/div/table/tbody/tr[2]/td 

回答

1

首先,你需要得到子,其中每個子包含需要提取一個元素:

NSArray *split = [text componentsSeparatedByString:@"<td>"]; 

在陣「分裂」,第一個對象包含要什麼,所以你將無法使用它了。現在,這個陣列中的每個子(除了第一個),你需要搜索字符串以「/ TD」標籤:

NSRange range = [string rangeOfString:@"</td>"]; 

,然後將其刪除,一切背後是什麼:

- (NSString *)substringToIndex:(NSUInteger)anIndex //you will get index by searching for "</td>" as mentioned 

編輯:

另一種可能性是使用componentsSeparatedByString甚至代替上述標記的第二和第三步,並在每個數組的第一項中,你會想要文本。

EDIT2:(整個代碼)

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]; 
    } 

我稍微改變了原來的文本顯示,其真正的工作表,更多的項目裏面

+0

我不想打擾你太多,但你可以告訴我這將如何在我的代碼中工作?我有點困惑,但似乎你對此非常瞭解。 –

+0

我編輯了我的答案。你只需要將你的NSData轉換爲NSString並使用這個字符串來代替我的originalText – Reconquistador