解析HTML的简单方法

时间:2018-03-28 16:06:54

标签: asp-classic

我有一个包含HTML代码的字符串。

<TR ALIGN=RIGHT VALIGN=TOP>
<TD ALIGN=CENTER>TN</TD>
<TD></TD>
<TD ALIGN=CENTER>W</TD>
<TD ALIGN=LEFT>I-40</TD>
<TD>1.7</TD>
<TD>0:01</TD>
<TD></TD>
<TD ALIGN=LEFT>+I 40 I 440, TN</TD>
<TD>560.8</TD>
<TD>8:57</TD>
<TD>1198.3</TD>
<TD>19:36</TD>

</TR>

<TR ALIGN=RIGHT VALIGN=TOP>
<TD ALIGN=CENTER>TN</TD>
<TD></TD>
<TD ALIGN=CENTER>E</TD>
<TD ALIGN=LEFT>I-440</TD>
<TD>4.7</TD>
<TD>0:04</TD>
<TD></TD>
<TD ALIGN=LEFT>+I 65 I 440, TN</TD>
<TD>565.5</TD>
<TD>9:01</TD>
<TD>1203.0</TD>
<TD>19:40</TD>

</TR>

我想循环并保留每个的第4行和第5行。

<TD ALIGN=CENTER>W</TD>
<TD ALIGN=LEFT>I-40</TD>

我希望将它合并为一个

<TD>W I-40</TD>

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

有不同的方法可以做到这一点。例如,如果html具有固定的结构,则可以read it line by line并将所需的行计为

Dim table: table = false
Dim td: td = 1
Dim s1: s1 = ""
Dim s2: s2 = ""

...

Do Until fs.AtEndOfStream 
    lineData = fs.ReadLine
    if instr(lcase(lineData), "<table")>0 then
        table = true
    else 
        if table and instr(lcase(lineData), "<td")>0 then
        td = td+1
        if td = 4 then
            s1 = replace(replace(lineData, "<TD ALIGN=CENTER>", ""), "</TD>", "")
            lineData = ""
        end if 
        if td = 5 then
            s2 = replace(replace(lineData, "<TD ALIGN=LEFT>", ""), "</TD>", "")
            lineData = "<TD>" & s1 & " " & s2 & "</TD>" & vbClLf
            td = 1
        end if
        end if
    end if
    Response.Write server.htmlencode(lineData) & "<br>"
Loop