用QTP调用外部vbs读写XML的例子
上一篇 / 下一篇 2007-05-19 13:32:18 / 个人分类:原创文章
查看( 2388 ) /
评论( 35 )
目前,企业中对XML的应用越来越广泛,作为自动化测试的测试工程师,也应该掌握XML的读写操作。51Testing软件测试网MR5d,d{4?Pz
以下我使用XML DOM技术演示一个例子,用以读取XML指定节点的节点内容值。51Testing软件测试网1bYjC1c
读取函数原型 GetXml strXmlPath,nodeName51Testing软件测试网7\.HdGVY9??H\
这个函数的第一个参数表示xml文件所在路径,第二个参数表示希望获取到的xml节点名,请结合下列例子看
_;Xb[u0首先,新建一个vbs文件(取个名字叫readXml.vbs),输入代码:
以下我使用XML DOM技术演示一个例子,用以读取XML指定节点的节点内容值。51Testing软件测试网1bYjC1c
读取函数原型 GetXml strXmlPath,nodeName51Testing软件测试网7\.HdGVY9??H\
这个函数的第一个参数表示xml文件所在路径,第二个参数表示希望获取到的xml节点名,请结合下列例子看
_;Xb[u0首先,新建一个vbs文件(取个名字叫readXml.vbs),输入代码:
CODE:
6A_,x'k:Z*`'?*Gf+i0'==================================================================51Testing软件测试网)a
}oGoA
' Author : songfun
B;zxa.R-G/]0'
Er9w;M8Vf0' Description : Read XML
$s#jGRh8~0'==================================================================
1o.b:XQ!au0Dim strXML
f{ Uk'G:Y#v0
3[$oRN G I7p"q6Bm0GetXml "c:\search.xml","TestResult" '这个函数的第一个参数表示xml文件所在路径,第二个参数表示希望获取到的xml节点名,请结合下列例子看51Testing软件测试网L#c2]G(az'Q*F\
MsgBox strXML51Testing软件测试网
v/Sn$M
\EI'n4y
PBas(V'U)@5W h051Testing软件测试网^PEE&VT*J7U
Function GetXml (ByVal strXmlFilePath,ByVal xmlNodeName)51Testing软件测试网-tK0z/P(X0BkQ
Dim xmlDoc,xmlRoot
g7rg^;A0 51Testing软件测试网,f
QG%KFuho
Set xmlDoc = CreateObject("Microsoft.XMLDOM") '创建XML DOM对象51Testing软件测试网3nO v%hmI
xmlDoc.async = False '控制加载模式为同步模式(xml树加载完毕后再执行后续代码)51Testing软件测试网6\.oU^r)Fq
xmlDoc.load strXmlFilePath '载入xml文件
f0|feG8`e+f0 If xmlDoc.parseError.errorCode <> 0 Then51Testing软件测试网9D\;~k4}d+J
MsgBox "XML文件格式不对,原因是:" & Chr(13) & xmlDoc.parseError.reason
!X'SV,@b0 Exit Function
H ` d I;Wj`5B0 End If51Testing软件测试网!_\*Ls^m0w j)U,n
Set xmlRoot = xmlDoc.documentElement
;r%[4m AK
?5Sk0 xmlRecursion xmlRoot,xmlNodeName '调用xml递归函数传入指定的根和节点名 51Testing软件测试网3H N&N
DA3d
GetXml = True 'xmlRecursion (xmlRoot)51Testing软件测试网S0{$wzH-]
51Testing软件测试网 wD6g.I!vOq&g_4y+G
End Function51Testing软件测试网3baed0U3B
51Testing软件测试网t
O0O#~_X%Q
Function xmlRecursion(byval xmlNode,byval strNodeName)51Testing软件测试网c;Q\Q'h%i^
If xmlNode.nodeName = strNodeName And xmlNode.hasChildNodes Then51Testing软件测试网(^,F+eN-r`3dzz2{
If xmlNode.childNodes.item(0).nodeName = "#text" Then
d5OqrH{8~0 strXML = strXML & xmlNode.nodeName & ":" & xmlNode.childNodes.item(0).nodeValue & Chr(13)
/@oH_0x*Cs ]}0 End If
2Z
]y$G2o-g2z hptY0 End If 51Testing软件测试网
d5Q3w8R;E
If xmlNode.hasChildNodes Then
Z Y/PA$uJ:z1b0 For Each childNodeItem In xmlNode.ChildNodes
D*y5V&z$S|0 If childNodeItem.hasChildNodes Then
f`)v7[jPG[1tX0Y5V0 xmlRecursion childNodeItem,strNodeName 51Testing软件测试网0Up:QUq7v
End If
b#Q { fceLL2u0 Next51Testing软件测试网OI.ZB,x
End If
Z,~i
EA lZQ0End Function
接着,自己构造一个xml文件(取个名字叫search.xml),如:CODE:51Testing软件测试网4oagM1U#dJs
<?xml version="1.0" encoding="GB2312"?>51Testing软件测试网`2x2xdCC2we/o
51Testing软件测试网9}:y~BW QG!S/]
<ROOT>
(`0P
Is2_0 <TestCase>
&`
~ S6N`v+G
n7_0 <TestNumberOne>1</TestNumberOne>51Testing软件测试网ys5[0t?3uO
<TestNumberTwo>2</TestNumberTwo>
5G1t!e!TPDVO#?0 <TestNumberThree>+</TestNumberThree>51Testing软件测试网4Y0Se[?
i
<TestResult>3</TestResult>