Scripting 如何遍历DOM对象?
我需要遍历DOM对象,并在其中显示文本,而不显示任何副本 例如:Scripting 如何遍历DOM对象?,scripting,vbscript,Scripting,Vbscript,我需要遍历DOM对象,并在其中显示文本,而不显示任何副本 例如: <div> <div>hello <div>welcome</div> hai </div> 123 </div> 如何在VBScript中实现这一点 实际上,我尝试过递归,但它似乎不能正常工作 function traverse(allnode) for each node in allnode if n
<div>
<div>hello
<div>welcome</div>
hai
</div>
123
</div>
如何在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元素。如何在VBScript中实现它?给定以下HTML:
<html>
<body>
<div>
<div>
hello
<div>welcome</div>
hai
</div>
123
</div>
<p>noli me tangere</p>
</body>
</html>
通过遍历M00 oDOM,0导致
#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
本小节显示递归DOM遍历的基本结构。如果你把它和你的函数做比较,为什么是函数?,你会看到
你错过了下一个机会
在循环之前,必须检查是否有子节点
基于遍历代码结构,很容易得出
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
收集一个名为via的分区的子分区的文本
Dim aDTs : aDTs = Array()
traverseDom01 oDOM, aDTs
WScript.Echo "|" & Join(aDTs, "|") & "|"
结果是
|hello|welcome|hai|123|
Dim aDTs : aDTs = Array()
traverseDom01 oDOM, aDTs
WScript.Echo "|" & Join(aDTs, "|") & "|"
|hello|welcome|hai|123|