51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3310|回复: 9
打印 上一主题 下一主题

[原创] VBS读取XML问题,请大侠帮忙看一下代码

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-11-17 13:45:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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”就报不支持该方法错误,请问大侠该怎么改呢?才能实现我想要那个属性值?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-11-17 15:19:33 | 只看该作者
把xml 文件贴出来吧
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-11-17 17:28:06 | 只看该作者
回复 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>
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-11-17 17:30:03 | 只看该作者
回复 3# csj
说白了就是,解析QTP的result文件中的内容
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-11-17 18:02:23 | 只看该作者
没有格式,看不懂
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2010-11-17 18:13: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代码
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2010-11-17 18:49:29 | 只看该作者
(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
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-11-17 20:21:05 | 只看该作者
回复 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
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2010-11-18 10:11:35 | 只看该作者
回复 7# TIB

感激膜拜中
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2010-11-18 10:12:52 | 只看该作者
回复 8# xhhuang1618


    多谢多谢
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-25 01:23 , Processed in 0.092702 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表