MsXMl selectNodes返回多余的节点

我有这个VBA脚本我正在写自动化自动化结果的制表。 我试图parsing的节点的例子如下:

> <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> 

从上面可以看出,根据迭代次数,testing节点可以有多less个结果。 我使用selectNodes方法来parsing文件中的所有节点,这样就恢复了正确数量的元素。 对于我返回的列表中的每个testing用例,我通过parsing来查看每个节点的嵌套列表中有多less个返回。 问题是不是每个返回嵌套,列表返回它不应该的文本文件中的所有。 我的代码如下。

 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 

一切正常,但variablestestCaseResultList应该返回包含在每个节点的列表,而是从其他节点返回。 我不知道我做错了什么。

因为这将返回上下文节点( testCase指向的节点)的所有“结果”后代,或者只是返回上下文节点的所有“结果”子节点(但不会返回孙子节点,曾孙等)

使用//result将返回文档根的所有“结果”后代,它将返回文档中的每个“结果”节点

类似的//numberOfIterations (返回文档根目录的所有“numberOfIterations”后代)应该被replace为.//numberOfIterations numberOfIterations或者只是numberOfIterations

有关更多详细信息,请参阅http://www.w3.org/TR/xpath/#path-abbrev上的缩写语法指&#x5357;