1
我使用遞歸方法遍歷xml,並希望確定特定節點是否具有任何屬性。這裏是我試圖使用vbscript獲取xml文件中的屬性
第一種方法:獲得使用foreach循環的所有屬性的列表中,但這種方法的問題,如果任何節點沒有任何屬性,它拋出錯誤
第二種方法:找到由屬性屬性名稱作爲參數傳遞,並驗證它是否返回null,但在這種情況下,我需要所有的屬性名稱方便,從不讓我繼續遞歸方法。
我使用遞歸方法遍歷xml,並希望確定特定節點是否具有任何屬性。這裏是我試圖使用vbscript獲取xml文件中的屬性
第一種方法:獲得使用foreach循環的所有屬性的列表中,但這種方法的問題,如果任何節點沒有任何屬性,它拋出錯誤
第二種方法:找到由屬性屬性名稱作爲參數傳遞,並驗證它是否返回null,但在這種情況下,我需要所有的屬性名稱方便,從不讓我繼續遞歸方法。
的人誰看着this會買:
第一種方法是正確的。裸露的骨頭實現:
Dim oFS : Set oFS = CreateObject("Scripting.FileSystemObject")
Dim sFSpec : sFSpec = oFS.GetAbsolutePathName("..\data\so15218800.xml")
Dim oXML : Set oXML = CreateObject("Msxml2.DOMDocument.6.0")
oXML.load sFSpec
If 0 = oXML.parseError Then
recursiveTraversalAtt oXML.documentElement, 0
Else
WScript.Echo objMSXML.parseError.reason
End If
Sub recursiveTraversalAtt(oElm, nIndent)
WScript.Echo Space(nIndent), oElm.tagName
If 0 < oElm.childNodes.length Then
If 0 < oElm.attributes.length Then showAttr oElm, nIndent
Dim oChild
For Each oChild In oElm.childNodes
recursiveTraversalAtt oChild, nIndent + 2
Next
Else
If 0 < oElm.attributes.length Then showAttr oElm, nIndent
End If
End Sub
Sub showAttr(oElm, nIndent)
Dim oAttr
For Each oAttr In oElm.attributes
WScript.Echo Space(nIndent + 1), oAttr.name, oAttr.value
Next
End Sub
輸出:
TestSuites
TestSuite
SuiteName Regression
TCName TestCase 1
TestCase
TCName TestCase 1
abc 123
TestStep
TSName TestStep 1
TestStep
TSName TestStep 2
NoAttr
TestSuite
SuiteName Regression
TCName TestCase 1
TestStep
TSName TestStep 1
TestCase
TCName TestCase 2
TestStep
TSName TestStep 1
TestStep
TSName TestStep 2
TestSuite
TestSuite
SuiteName Sanity
你可以指示使用縮進......?這是強制性的 – user1934035 2013-03-07 10:40:15
另外我試圖將測試套件,測試用例和測試步驟放入字典對象(嵌套字典)中,以及不知道字典如何執行。如果你有這方面的見解。請拋出一些光。 – user1934035 2013-03-07 10:41:42