在VBScript中循环浏览DOMDocument
由于某种原因,我在任何地方都找不到这个问题的简单答案 给定任何文档,例如在VBScript中循环浏览DOMDocument,dom,vbscript,asp-classic,domdocument,Dom,Vbscript,Asp Classic,Domdocument,由于某种原因,我在任何地方都找不到这个问题的简单答案 给定任何文档,例如 粗体 我只想循环遍历每个节点并打印节点名,列出所有属性名及其值(如果有的话)。e、 g.上述代码段将输出: root div id = value name = arga b 我能找到的每个示例都涉及到选择特定节点和特定命名属性 这是我到目前为止所做的,但递归使用时会失败 Dim oDoc : Set oDoc = Server.CreateObject("MSXML2.DOMDocument.6.0")
粗体
我只想循环遍历每个节点并打印节点名,列出所有属性名及其值(如果有的话)。e、 g.上述代码段将输出:
root
div
id = value
name = arga
b
我能找到的每个示例都涉及到选择特定节点和特定命名属性
这是我到目前为止所做的,但递归使用时会失败
Dim oDoc : Set oDoc = Server.CreateObject("MSXML2.DOMDocument.6.0")
If oDoc.LoadXML("<root d=""sdfgf""><div id=""asdfadfA"">slkdfhga</div><div id=""asdfadfA"">slkdfhga<b>this</b></div></root>") Then
echo traverse(oDoc.documentElement)
End If
Function traverse(n)
Dim s
s = s & typename(n) & "<br />"
s = s & n.nodename & "<br />"
s = s & n.nodetype & "<br />"
'any attributes?
Set oAttributes = n.attributes
If isObject(oAttributes) Then
If oAttributes.length > 0 Then
'print attribs
s = s & "---> has attributes <br />"
For each oAttribute in oAttributes
s = s & "--->" & oAttribute.Name & " = " & oAttribute.Value
Next
End If
End If
'any children?
For Each oChildNode in n.childNodes
'print child
s = s & typename(oChildNode) & "<br />"
s = s & oChildNode.nodename & "<br />"
'recursive
s = s & traverse(oChildNode)
Next
traverse = s.Value
End Function
Dim-oDoc:Set-oDoc=Server.CreateObject(“MSXML2.DOMDocument.6.0”)
如果是oDoc.LoadXML(“slkdfhgaslkdfghgathis”),那么
回音遍历(oDoc.documentElement)
如果结束
函数遍历(n)
暗淡的
s=s&typename(n)和“
”
s=s&n.nodename&“
”
s=s&n.nodetype&“
”
“有什么特征吗?
设置属性=n个属性
如果是isObject(oAttributes),则
如果oAttributes.length>0,则
“打印属性”
s=s&-->具有属性
每种燕麦的贡品都是燕麦贡品
s=s&“-->”&oAttribute.Name&“=”&oAttribute.Value
下一个
如果结束
如果结束
“有孩子吗?
对于n.childNodes中的每个oChildNode
“打印孩子
s=s&typename(oChildNode)和“
”
s=s&oChildNode.nodename&“
”
“递归的
s=s和导线测量(oChildNode)
下一个
遍历=s.值
端函数
您不可能看得太远,大量的示例都是如何做到这一点的documentElement
将为您提供根元素,然后使用.childNodes
向下导航结构。Hmm可能重复,这个问题不一样。在其中,代码提取特定的命名属性。我的问题是寻找通用的“通过一切循环”更新的问题,更详细,它的所有工作。问题是随着节点的循环,当节点类型不是很好的时候,你必须检查孩子和属性,听到你已经排序它,考虑张贴一个答案没有错误的自我回答,事实上它是被鼓励的。
Dim oDoc : Set oDoc = Server.CreateObject("MSXML2.DOMDocument.6.0")
If oDoc.LoadXML("<root d=""sdfgf""><div id=""asdfadfA"">slkdfhga</div><div id=""asdfadfA"">slkdfhga<b>this</b></div></root>") Then
echo traverse(oDoc.documentElement)
End If
Function traverse(n)
Dim s
s = s & typename(n) & "<br />"
s = s & n.nodename & "<br />"
s = s & n.nodetype & "<br />"
'any attributes?
Set oAttributes = n.attributes
If isObject(oAttributes) Then
If oAttributes.length > 0 Then
'print attribs
s = s & "---> has attributes <br />"
For each oAttribute in oAttributes
s = s & "--->" & oAttribute.Name & " = " & oAttribute.Value
Next
End If
End If
'any children?
For Each oChildNode in n.childNodes
'print child
s = s & typename(oChildNode) & "<br />"
s = s & oChildNode.nodename & "<br />"
'recursive
s = s & traverse(oChildNode)
Next
traverse = s.Value
End Function