例如,我想只遍历" test"的子节点。标签名称"结果"。
<test>
<result>
</result>
<memo1>
</memo1>
<result>
</result>
<memo2>
</memo2>
<result>
</result>
<memo3>
</memo3>
</test>
我认为this可能提供我想要的东西。但是,我并没有完全了解它是如何工作的(如果它确实提供了我想要的东西)。
答案 0 :(得分:1)
以下是使用XML数据的示例。我非常确定你的XML文件必须在第一行有<?xml version='1.0'?>
。但除此之外,这就是它的工作原理:
Sub testXMLLoop()
Dim xml As String
xml = "<?xml version='1.0'?>" & _
vbCrLf & " <test>" & _
vbCrLf & " <result>" & _
vbCrLf & " </result>" & _
vbCrLf & " <memo1>" & _
vbCrLf & " </memo1>" & _
vbCrLf & " <result>" & _
vbCrLf & " </result>" & _
vbCrLf & " <memo2>" & _
vbCrLf & " </memo2>" & _
vbCrLf & " <result>" & _
vbCrLf & " </result>" & _
vbCrLf & " <memo3>" & _
vbCrLf & " </memo3>" & _
vbCrLf & " </test>"
Dim xmlDoc As Object
Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0")
xmlDoc.LoadXML xml
'xmlDoc.Load "file\path\to\books.xml"
If (xmlDoc.parseError.ErrorCode <> 0) Then
Dim myErr As Object
Set myErr = xmlDoc.parseError
Debug.Print "You have error " + myErr.reason
Else
Dim objNodeList As Object
Set objNodeList = xmlDoc.getElementsByTagName("test")
Dim oTestList, oChild As Object
For Each oTestList In objNodeList
For Each oChild In oTestList.ChildNodes
if oChild.nodeName = "result" then
'Do stuff with oChild
Debug.Print oChild.nodeTypedValue
end if
Next
Next
End If
End Sub