2013-10-07 57 views
1

我有一個HTML結構保存在名爲strResponse1的ASP變量上HTML提取表格上的HTML

我想要做的就是提取一個特定的表。該表具有名爲「dataTableParent」的常量類。我一直在使用UBOUND和LBOUND VBScript函數

Here is my simple code: 

Dim str, tmp, toptmp, bottmp, tablestr 
str = strResponse1 
tmp = split(str, "dataTableParent") 
      toptmp = tmp(UBound(tmp)) 
      tmp2 = split(toptmp, "</table>") 
      bottmp = tmp2(LBound(tmp2)) 
      tablestr = "<table class=" & chr(34) & "dataTableParent" & bottmp & "</table>" 

所以我用ASP Trim函數,UBOUND修剪的上界字符串,LBOUND修剪下界串做了一個簡單的代碼提取表。我使用表類:dataTableParent獲取上限修整的起始點,並使用</table>獲得下限修整的終點。代碼在提取表格方面工作得很好,但問題是,有時在父母「<TD>」上有另一個表格,這使我難以正確提取表格。

檢查表結構這個HTML樣本

<html> 
<head> 
<title></title> 
</head> 
<body> 
    <table class="dataTableParent"> 
     <tr> 
      <td> 
        <table> 
         <tr> 
           <td>This is an example of another table elements</td> 
         </tr> 
        </table> 
      </td> 
     </tr> 
    </table> 
</body> 
</html> 

由於我的代碼標識僅第一關閉表標籤,修剪時停止它找到的第一個關閉標籤</table>,知道有兩個關閉標籤的表這裏。那麼我怎麼可能提取表格的正確結束標籤?任何人可以幫忙?提前致謝。 :)

回答

0

一如既往:不要在HTML上使用字符串處理。

Option Explicit 

Dim doc, table 
Set doc = CreateObject("htmlfile") 

' ... set strResponse1 ... 

doc.write strResponse1 

For Each table In doc.body.getElementsByTagName("TABLE") 
    If table.className = "dataTableParent" Then 
     ' use DOM methods to navigate to correct table cell and extract data 
     ' with the help of, e.g., innerText() 
    End If 
Next 
+0

如何提取表本身?可能嗎? – Onimax

+0

就像我只是忽略其他html元素,並只保留我想''dataTableParent「'表是否可以提取此表? – Onimax

+0

這取決於你的意思是「提取」。如果你想把表格的HTML作爲一個字符串,那麼'table.outerHTML'就可以做到。如果你想要特定表格單元格的數據,我建議繼續使用DOM而不是拉出HTML字符串。 – Tomalak