考慮下面的XML我怎樣才能提取所有子節點與通用文本值
<Tests>
<AutomatedTests>
<TestName>Test1</TestName>
<FunctionalLibraries>
<FunctionalLibrary>CommonLib</FunctionalLibrary>
<FunctionalLibrary>AppTestLib</FunctionalLibrary>
<FunctionalLibrary>Test1Lib</FunctionalLibrary>
</FunctionalLibraries>
</AutomatedTests>
<AutomatedTests>
<TestName>Test2</TestName>
<FunctionalLibraries>
<FunctionalLibrary>CommonLib</FunctionalLibrary>
<FunctionalLibrary>AppTestLib</FunctionalLibrary>
<FunctionalLibrary>Test2Lib</FunctionalLibrary>
</FunctionalLibraries>
</AutomatedTests>
<AutomatedTests>
<TestName>Test3</TestName>
<FunctionalLibraries>
<FunctionalLibrary>CommonLib</FunctionalLibrary>
<FunctionalLibrary>Test3Lib</FunctionalLibrary>
</FunctionalLibraries>
</AutomatedTests>
</Tests>
使用VBScript,我如何才能找到通用於所有的/測試所有/測試/ AutomatedTests/FunctionalLibraries節點/ AutomatedTests節點。
基於上述XML,結果應該是...
<CommonTestLibraries>
<FunctionalLibrary>CommonLib</FunctionalLibrary>
</CommonTestLibraries>
感謝
這裏是我有什麼,我希望有一個更簡單的方法,因爲我必須在做這幾次同一個文件。
set tempDict = CreateObject("Scripting.Dictionary")
set commonDict = CreateObject("Scripting.Dictionary")
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Load(fileName)
set testNodes = xmlDoc.SelectNodes("/Tests/AutomatedTests")
isFirst = true
for each testNode in testNodes
set functionalLibraryNodes = testNode.SelectNodes("FunctionLibraries/FunctionLibrary")
For Each functionalLibraryNode in functionalLibraryNodes
If not tempDict.Exists(functionalLibraryNode.Text) Then
tempDict.Add functionalLibraryNode.Text, functionalLibraryNode.Text
End If
Next
If NOT isFirst Then
for each item in commonDict
if tempDict.Exists(item) = false Then
commonDict.Remove item
End If
Next
Else
Set commonDict = tempDict
isFirst = false
End If
Set tempDict = nothing
Set tempDict = CreateObject("Scripting.Dictionary")
Next
你看過嗎? http://stackoverflow.com/questions/14975608/recurse-xml-file-using-vbscript – Leptonator
SO不是一個「爲我自由寫代碼」類型的網站。你試過什麼了? –
@Leptonator,您建議的鏈接似乎不符合我的要求。 – bthound