51Testing软件测试论坛
标题:
VBS读取XML问题,请大侠帮忙看一下代码
[打印本页]
作者:
csj
时间:
2010-11-17 13:45
标题:
VBS读取XML问题,请大侠帮忙看一下代码
readConfig("C:\MyFile\Project\024609\024609\Report\Results.xml")
Function readConfig(byval path)
Set xmlDoc = Nothing
Set xmlDoc = CreateObject("Msxml2.DOMDocument")
'loadXML
xmlDoc.load(path)
Set root = xmlDoc.documentElement.selectSingleNode("//Report/Doc/DIter")
msgbox root.childNodes(0).childNodes(10).Nodename
msgbox root.childNodes(0).childNodes(10).item(3).nodeName
set xmlDoc = Nothing
End Function
运行到“msgbox root.childNodes(0).childNodes(10).item(3).nodeName”就报不支持该方法错误,请问大侠该怎么改呢?才能实现我想要那个属性值?
作者:
sspku
时间:
2010-11-17 15:19
把xml 文件贴出来吧
作者:
csj
时间:
2010-11-17 17:28
回复
2#
sspku
<Report>
<IDIter>
<NodeArgs eType="StartAction" icon="4" nRep="7" status="Failed"><Disp><![CDATA[SetUp Summary]]></Disp></NodeArgs><NodeArgs eType="StartAction" icon="4" nRep="150" status="Passed"><Disp><![CDATA[Login Summary]]></Disp></NodeArgs><NodeArgs eType="StartAction" icon="4" nRep="185" status="Passed"><Disp><![CDATA[Modules Summary]]></Disp></NodeArgs><NodeArgs eType="StartAction" icon="4" nRep="317" status="Passed"><Disp><![CDATA[ASP.NET Summary]]></Disp></NodeArgs><NodeArgs eType="StartAction" icon="4" nRep="369" status="Passed"><Disp><![CDATA[ASP Summary]]></Disp></NodeArgs><NodeArgs eType="StartAction" icon="4" nRep="441" status="Passed"><Disp><![CDATA[Attachment Summary]]></Disp></NodeArgs><NodeArgs eType="StartAction" icon="4" nRep="524"><Disp><![CDATA[Workflow Queue Monitor Summary]]></Disp></NodeArgs><NodeArgs eType="StartAction" icon="4" nRep="526" status="Passed"><Disp><![CDATA[Client Portal Summary]]></Disp></NodeArgs>
</IDIter>
</Report>
作者:
csj
时间:
2010-11-17 17:30
回复
3#
csj
说白了就是,解析QTP的result文件中的内容
作者:
sspku
时间:
2010-11-17 18:02
没有格式,看不懂
作者:
csj
时间:
2010-11-17 18:13
回复
5#
sspku
简化以后的格式
<Report>
<IDIter>
<NodeArgs eType="StartAction" icon="4" nRep="150" status="Passed">
<Disp><![CDATA[Login Summary]]></Disp></NodeArgs>
</IDIter>
</Report>
对于上面这个XML怎么获取icon的值?求赐教vbs代码
作者:
TIB
时间:
2010-11-17 18:49
(1)使用XMLUtil对象。
XMLUtil对象用于读取XML文件,其LoadFile方法可从指定的文件中读入XML格式的文本,返回XMLData对象,例如,下面的脚本:
' 使用XMLUtil对象的CreateXML方法来创建XMLData对象
Set doc = XMLUtil.CreateXML()
' 加载XML文件用于检查
doc.LoadFile "Test.XML"
可用Validate方法来指定某个Schema文件,检查加载的XML文件是否满足Schema的格式要求,例如,下面的脚本检查对象库导出的XML文件是否满足ObjectRepository.xsd的要求:
'检查XML文档是否满足指定的XML schema
ans = doc.Validate ("D:\Program Files\Mercury Interactive\QuickTest Professional\dat\ObjectRepository.xsd")
'如果检查满足Schema,则提示检查成功,否则列出不满足的原因
If ans Then
MsgBox "XML文件匹配指定的Schema!"
else
errNo = doc.GetValidationErrorsNumber
For i = 1 to errNo
errStr = doc.GetValidationError(i)
MsgBox errStr
Next
End If
(2)利用XMLDOM对象来加载XML数据进行分析。
XMLDOM是用来访问和操作XML文档的编程接口规范。XMLDOM被设计为可用于任何语言和任何操作系统。借助DOM,我们可以通过VBScript创建XML文档对象,遍历其结构,增、改、删其元素。DOM将整个XML文档视作一棵树,文档级的元素是树的根。
XMLDOM包含四个主要对象:XMLDOMDocument、XMLDOMNode、XMLDOMNodeList、XMLDOMNamedNodeMap。每个XMLDOM对象有其自己的特性和方法。
下面的例子通过XMLDOM对象加载XML文件,修改指定节点的值,然后保存到另外一个XML文件:
Set xmlDoc = CreateObject("Microsoft.XMLDOM") ' 创建XMLDOM对象
xmlDoc.async = False
xmlDoc.load "test.xml" ' 加载XML文档
' 检查XML文档是否有错误
If xmlDoc.parseError.errorCode <> 0 Then
Set myErr = xmlDoc.parseError
MsgBox("XML Loads Failed. " & myErr.reason)
Else
Set rootNode = xmlDoc.documentElement
' 修改XML指定节点的某个属性的值
rootNode.childNodes(0).childNodes(0).childNodes(0).attributes(4).nodeValue = "E-Mail"
Print rootNode.childNodes(0).childNodes(0).childNodes(0).attributes(4).nodeValue ' 打印修改后的节点值
rootNode.childNodes(0).childNodes(0).childNodes(0).attributes(5).nodeValue = "hello!" '修改节点值
Print rootNode.childNodes(0).childNodes(0).childNodes(0).attributes(5).nodeValue '打印修改后的节点值
' 保存xml数据到另外一个文件
xmlDoc.save "test_save.xml"
End If
Set xmlDoc = Nothing
作者:
xhhuang1618
时间:
2010-11-17 20:21
回复
1#
csj
Function readConfig(str_Path)
Dim str_nRep,str_icon,str_eType,str_status
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.load(str_Path)
For i = 0 to xmlDoc.getElementsByTagName("NodeArgs").Length -1
str_nRep = str_nRep + xmlDoc.getElementsByTagName("NodeArgs")(i).attributes.getNamedItem("nRep").nodeValue + vbCrLf
str_icon = str_icon + xmlDoc.getElementsByTagName("NodeArgs")(i).attributes.getNamedItem("icon").nodeValue + vbCrLf
str_eType = str_eType + xmlDoc.getElementsByTagName("NodeArgs")(i).attributes.getNamedItem("eType").nodeValue + vbCrLf
If xmlDoc.getElementsByTagName("NodeArgs")(i).attributes.length = 3 Then
str_status = str_status + "No node" + vbCrLf
else
str_status = str_status + xmlDoc.getElementsByTagName("NodeArgs")(i).attributes.getNamedItem("status").nodeValue + vbCrLf
End If
Next
Set xmlDoc = Nothing
msgbox str_nRep
msgbox str_icon
msgbox str_eType
msgbox str_status
End Function
作者:
csj
时间:
2010-11-18 10:11
回复
7#
TIB
感激膜拜中
作者:
csj
时间:
2010-11-18 10:12
回复
8#
xhhuang1618
多谢多谢
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2