|
我想获取QTP自动生成的测试报告(test目录/Res*/Report/Results.xml)里的Passed或Failed的字符串,然后写到excel里去
但是QTP的这个xml结果文件格式好像不是传统的<节点>值<节点>这样的结构,我用以下解析xml文档的vbs函数时报错“文档格式不正确,原因是:根据DTD/Schema,元素内容无效”
下面是网上找的xml文档的vbs代码,解析<节点>值<节点>这样的没问题:
'==================================================================
' Author : songfun
'
' Description : Read XML
'==================================================================
Dim strXML
GetXml "D:\snow\QTP\for topkick\FTP_Upload\Res11\Report\Results.xml","Action" '这个函数的第一个参数表示xml文件所在路径,第二个参数表示希望获取到的xml节点名,请结合下列例子看
MsgBox strXML
Function GetXml (ByVal strXmlFilePath,ByVal xmlNodeName)
Dim xmlDoc,xmlRoot
Set xmlDoc = CreateObject("Microsoft.XMLDOM") '创建XML DOM对象
xmlDoc.async = False '控制加载模式为同步模式(xml树加载完毕后再执行后续代码)
xmlDoc.load strXmlFilePath '载入xml文件
If xmlDoc.parseError.errorCode <> 0 Then
MsgBox "XML文件格式不对,原因是:" & Chr(13) & xmlDoc.parseError.reason
Exit Function
End If
Set xmlRoot = xmlDoc.documentElement
xmlRecursion xmlRoot,xmlNodeName '调用xml递归函数传入指定的根和节点名
GetXml = True 'xmlRecursion (xmlRoot)
End Function
Function xmlRecursion(byval xmlNode,byval strNodeName)
If xmlNode.nodeName = strNodeName And xmlNode.hasChildNodes Then
If xmlNode.childNodes.item(0).nodeName = "#text" Then
strXML = strXML & xmlNode.nodeName & ":" & xmlNode.childNodes.item(0).nodeValue & Chr(13)
End If
End If
If xmlNode.hasChildNodes Then
For Each childNodeItem In xmlNode.ChildNodes
If childNodeItem.hasChildNodes Then
xmlRecursion childNodeItem,strNodeName
End If
Next
End If
End Function
请教如何获取测试报告里Passed或Failed的字符串呢? |
|