次の 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 を使用して、すべての /Tests/AutomatedTests ノードに共通するすべての /Tests/AutomatedTests/FunctionalLibraries ノードを見つけるにはどうすればよいですか。
上記の 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