1

自動化結果の集計を自動化するために作成しているこのVBAスクリプトがあります。私が解析しようとしているノードの例は次のとおりです。

> <test id="41">
>           <name>7.1.1.4_BandI_PS</name>
>           <ttcnTestCaseName>7.1.1.4</ttcnTestCaseName>
>           <numberOfIterations>1</numberOfIterations>
>           <failureAction selected="Continue"/>
>           <runMode>Normal</runMode>
>           <testPicsPixitDeviation>
>             <picsPixitDeviationTag>BandI</picsPixitDeviationTag>
>             <picsPixitDeviationTag>PS</picsPixitDeviationTag>
>             <picsPixitDeviationTag>NonCipher</picsPixitDeviationTag>
>         </testPicsPixitDeviation>
>           <comment/>
>           <result iterationIndex="0" repeatIndex="0">
>             <status>
>               <status>Passed</status>
>             </status>
>             <resultLocation>C:\result_arch\MAC_D12wk47_v10-tc_7_1_1_4_2013-01-07_15.18.27</resultLocation>
>             <startTime>2013-01-07_15.18.26</startTime>
>             <executionDuration>120</executionDuration>
>             <ptsIpAddress>127.0.0.1</ptsIpAddress>
>           </result>
>         </test>
>         <test id="42">
>           <name>7.1.1.8_BandI_CS</name>
>           <ttcnTestCaseName>7.1.1.8</ttcnTestCaseName>
>           <numberOfIterations>1</numberOfIterations>
>           <failureAction selected="Continue"/>
>           <runMode>Normal</runMode>
>           <testPicsPixitDeviation>
>             <picsPixitDeviationTag>BandI</picsPixitDeviationTag>
>             <picsPixitDeviationTag>CS</picsPixitDeviationTag>
>             <picsPixitDeviationTag>NonCipher</picsPixitDeviationTag>
>         </testPicsPixitDeviation>
>           <comment/>
>           <result iterationIndex="0" repeatIndex="0">
>             <status>
>               <status>Passed</status>
>             </status>
>             <resultLocation>C:\result_arch\MAC_D12wk47_v10-tc_7_1_1_8_2013-01-07_15.20.27</resultLocation>
>             <startTime>2013-01-07_15.20.27</startTime>
>             <executionDuration>104</executionDuration>
>             <ptsIpAddress>127.0.0.1</ptsIpAddress>
>           </result>
>         </test>

上からわかるように、テストノードは反復回数に応じて同じ数の結果を得ることができます。selectNodesメソッドを使用してファイル内のすべてのノードを解析しました。これにより、適切な数の要素が復元されます。私が返すリストの各テストケースについて、解析していくつあるかを確認し、ノードごとにネストされたリストに戻ります。問題は、それぞれにネストされたものを返す代わりに、リストが想定外のテキストファイル内のすべてを返すことです。私のコードは以下の通りです。

Dim testCase As MSXML2.IXMLDOMNode
For Each testCase In testCaseNamesList
    Dim passed, failed, error, totalRunTime, iterationCount As Integer
    Dim passPcnt, failPcnt, errorPcnt, averageRunTime As Double
    Dim testCaseName As String
    Dim testCaseResultList As MSXML2.IXMLDOMNodeList


    Set testCaseResultList = testCase.SelectNodes("//result")
    MsgBox (testCaseResultList.Length)

    testCaseName = testCase.FirstChild.Text
    iterationCount = CInt(testCase.SelectSingleNode("//numberOfIterations").Text)

    Dim testCaseResult As MSXML2.IXMLDOMNode
    For Each testCaseResult In testCaseResultList

すべてが機能しますが、変数testCaseResultListは各ノードに含まれるリストを返すことになっていますが、代わりに他のノードから返されます。何が間違っているのかわかりません。

4

1 に答える 1

2

.//resultコンテキスト ノード (testCase指すノード)のすべての「結果」子孫を返すか、コンテキスト ノードのresultすべての「結果」子を返す (ただし、孫、ひ孫などは返さない) のいずれかを試してください。

を使用//resultすると、ドキュメント ルートのすべての「結果」子孫が返され、ドキュメント内のすべての「結果」ノードが返されます。

同様に//numberOfIterations(ドキュメント ルートのすべての "numberOfIterations" 子孫を返します) は、.//numberOfIterationsまたは単にnumberOfIterations

詳細については、 http://www.w3.org/TR/xpath/#path-abbrevの省略構文ガイドを参照してください。

于 2013-02-07T01:22:49.610 に答える