2013-10-07 4 views
1

strResponse1이라는 ASP 변수에 HTML 구조가 저장되어 있습니다.HTML에서 ASP 추출 테이블

내가 원하는 것은 특정 테이블을 추출하는 것입니다. 테이블에는 "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 트림 기능 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'이 그것을 할 것입니다. 특정 테이블 셀의 데이터를 원한다면 HTML 문자열을 추출하는 대신 DOM을 계속 사용하는 것이 좋습니다. – Tomalak

관련 문제