2011-11-30 2 views
0

나는 dom 객체를 통해 트래버스하고 중복되지 않고 텍스트를 표시해야합니다.DOM 개체를 통과하는 방법은 무엇입니까?

예를

<div> 
     <div>hello 
     <div>welcome</div> 
     hai 
    </div> 
123 
</div> 

출력해야한다 :

hello 
welcome 
hai 
123 

방법이 VBScript로 구현하는 방법?

실제로 내가 재귀와 시도하지만 제대로 수행하지 않는

function traverse(allnode) 

for each node in allnode 
    if node.hasChildNodes then 
     traverse(node.childNodes) 
    else 
     Msgbox node.nodeValue 
    end if 
end function 

이 기능이 한 번 이상 (각 div 요소에 대한 IE)의 "텍스트"를 인쇄하고 작동하는 것 같다. 어떻게 그것을 vbscript에서 구현할 수 있습니까?

답변

0

을 감안할 때이 HTML :

<html> 
<body> 
    <div> 
    <div> 
    hello 
    <div>welcome</div> 
    hai 
    </div> 
    123 
    </div> 
    <p>noli me tangere</p> 
</body> 
</html> 
오돔의

#document 
    HTML 
    HEAD 
    TITLE 
    /TITLE 
    /HEAD 
    BODY 
    DIV 
    DIV 
     #text 
     /#text 
     DIV 
     #text 
     /#text 
     /DIV 
     #text 
     /#text 
    /DIV 
    #text 
    /#text 
    /DIV 
    P 
    #text 
    /#text 
    /P 
    /BODY 
    /HTML 
/#document 

이 하위에서이 하위

Sub traverseDom00(ndX, nInd) 
    WScript.Echo Space(nInd), ndX.nodeName 
    If ndX.hasChildNodes Then 
    Dim ndY 
    For Each ndY In ndX.childNodes 
     traverseDom00 ndY, nInd + 1 
    Next 
    End If 
    WScript.Echo Space(nInd), "/" & ndX.nodeName 
End Sub 

traverseDom00 oDOM, 0를 통해 결과를 호출 재귀 DOM 탐색을위한 기본 구조를 보여줍니다 . 당신은 (함수가 왜?), 당신은

  1. 당신이 다음
  2. 은 당신 루프에게 전에 childNodes에 을 가지고 있는지 확인해야 누락 된 것을 확인할 수 있습니다 함수에이를 비교하면

는 순회 코드 구조를 기반으로, 그것은 DIV의 자녀 인 텍스트를 수집

Sub traverseDom01(ndX, aRes) 
    If ndX.hasChildNodes Then 
    Dim ndY 
    For Each ndY In ndX.childNodes 
     traverseDom01 ndY, aRes 
    Next 
    End If 
    If "#text" = ndX.nodeName Then 
    If "DIV" = ndX.parentNode.nodeName Then 
     ReDim Preserve aRes(UBound(aRes) + 1) 
     aRes(UBound(aRes)) = Trim(ndX.nodeValue) 
    End If 
    End If 
End Sub 

가지고 올 쉽다.

Dim aDTs : aDTs = Array() 
    traverseDom01 oDOM, aDTs 
    WScript.Echo "|" & Join(aDTs, "|") & "|" 

통해 호출 결과

|hello|welcome|hai|123| 
이다
관련 문제