关于HTML的ASP提取表

时间:2013-10-07 06:58:46

标签: html asp-classic vbscript

我在一个名为strResponse1

的ASP变量上保存了一个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用于修剪Upper Bound字符串,LBound用于修剪Lower Bound字符串。我使用表类: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>时停止,因为知道此处有两个关闭标记。那么我怎样才能在正确的结束标记上提取表格呢?有人可以帮忙吗?提前致谢。 :)

1 个答案:

答案 0 :(得分: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