1

我在名为 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>,因为这里知道表有两个结束标记。那么我怎样才能在正确的结束标签上提取表格呢?任何人都可以帮忙吗?提前致谢。:)

4

1 回答 1

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
于 2013-10-07T07:27:14.367 回答