搜索1:
目前,企业中对XML的应用越来越广泛,作为自动化测试的测试工程师,也应该掌握XML的读写操作。
  以下我使用XML DOM技术演示一个例子,用以读取XML指定节点的节点内容值。
  读取函数原型 GetXml strXmlPath,nodeName
  这个函数的第一个参数表示xml文件所在路径,第二个参数表示希望获取到的xml节点名,请结合下列例子看
  首先,新建一个vbs文件(取个名字叫readXml.vbs),输入代码:
Dim strXML
  GetXml "c:search.xml","TestResult" '这个函数的第一个参数表示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

问题:
  haschildnodes()这个方法好奇怪,明明已经没有子节点了,却仍然返回true,
  比如<TestResult>1</TestResult>这个节点,它的childNodes.item(0).nodeName竟然是“#text”,但是根据例子来看TestResult已经没有子节点了阿
回答:
  因为在xml有一个特殊的“子节点”——文本节点。比如 <TestResult>100</TestResult>
  这个节点TestResult下并不是没有子节点,而是有一个文本节点,这个节点的nodeName就是“#text”,而nodeValue是100.如果是 <TestResult/> 这种节点的话,那么用hasChildNodes则返回False
遍历xml的代码:
Option Explicit
Dim xmlDoc,myErr,strXML
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.load "c:calc1.xml"
If xmlDoc.parseError.errorCode <> 0 Then
Set myErr = xmlDoc.parseError
MsgBox("XML Loads Failed. " & myErr.reason)
Else
Set rootNode = xmlDoc.documentElement
Call rTravel(rootNode)
MsgBox strXML
End If
Sub rTravel (rNode)
Dim blnTwo,intTestCase,
blnTwo = False
iLen = rNode.childNodes.length
If iLen > 0 Then
For i = 0 To rNode.childNodes.length -1
Set child = rNode.childNodes.item(i)
Call rTravel(child)
childtext = child.nodeValue
strXML = strXML & childtext & chr(13)
Next
Else
Exit Sub
End If
End Sub

方法二:
Option Explicit
Dim xmlDoc,myErr,strXML
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.load "c:calc1.xml"
If xmlDoc.parseError.errorCode <> 0 Then
Set myErr = xmlDoc.parseError
MsgBox("XML Loads Failed. " & myErr.reason)
Else
Set rootNode = xmlDoc.documentElement
Call rTravel(rootNode)
MsgBox strXML
End If
Sub rTravel (rNode)
Dim blnTwo,intTestCase,
blnTwo = False
iLen = rNode.childNodes.length
If iLen > 0 Then
For i = 0 To rNode.childNodes.length -1
Set child = rNode.childNodes.item(i)
Call rTravel(child)
childtext = child.nodeValue
strXML = strXML & childtext & chr(13)
Next
Else
Exit Sub
End If
End Sub

搜索2:
Dim filepath,xmlDoc,myErr,strXML,rootNode
filepath="c:\12.xml"
Set xmlDoc=CreateObject("Microsoft.XMLDOM")'创建一个xml对象
xmlDoc.async=False
xmlDoc.load filepath '加载xml文件
If xmlDoc.parseError.errorCode<>0 Then'返回错误信息
Set myErr=xmlDoc.parseError
MsgBox("XML Loads Faild."&myErr.reason)
Else
Set rootNode=xmlDoc.documentElement'设置根节点
Call rTravel(rootNode)'遍历节点
msgBox strXML
End If

Sub rTravel(rNode)
Dim blnTwo,intTestCase,iLen,i,child
blnTwo=False
iLen=rNode.childNodes.length'返回节点的子节点数目
If iLen>0 Then
For i=0 to rNode.childNodes.length-1
Set child=rNode.childNodes.item(i)'获取当前节点对象
Call rTravel(child)
childtext=child.nodeValue'获取节点的值
strXML=strXML & childtext & chr(13)'chr(13)回车符
Next
else
Exit Sub
End If
End Sub

另附搜索到的qtp_xml学习总结

QTP操作xml文件方法相关推荐

  1. php下xmlwriter,PHP实现基于XMLWriter操作xml的方法

    这篇文章主要介绍了PHP基于XMLWriter操作xml的方法,结合实例形式分析了php使用XMLWriter生成及解析xml数据的操作技巧,需要的朋友可以参考下 接着昨天的这次再来学习一种读写xml ...

  2. php 赋值给 dom对象,详解PHP原生DOM对象操作XML的方法

    详解PHP原生DOM对象操作XML的方法 发布于 2017-08-08 20:15:29 | 80 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...

  3. JAVA操作xml文件

    参考:java操作xml方法,总有适合你的 XML技术在Java开发中的应用 1.简介 xml: extensible Markup Language 1.1使用场景: 不同的系统之间交互时使用xml ...

  4. Qt操作XML文件(创建,读,写,修改,添加,删除)

    XML文件在项目开发的过程中经常用的,比如配置文件基本上都是XML格式的,本文介绍在Qt环境下操作XML文件,具体用法看代码 原txt文件内容,在 http://www1.jctrans.com/to ...

  5. c++操作xml文件

    做软件的不会c++,都不好意思说自己是搞软件的.最近也开始慢慢学习c++的东西,今天就写写c++如何操作xml文件吧.我们使用的是tinyxml,有个小巧的库,可以生成和解析XML文档.免费开源,可以 ...

  6. C#中读取XML文件方法

    C#中读取XML文件方法 XML 简介 格式 c#读取XML文件方法 使用XmlDocument 操作 注意 解决方法: 使用XmlTextReader/XmlTextWriter 操作 使用Linq ...

  7. MFC操作ini文件方法

    转载:https://blog.csdn.net/rayborn1105/article/details/8192142 在我们的程序设计中经常需要对一些参数进行配置,配置好后还要在下一次启动仍然有效 ...

  8. C#实用教程-操作xml文件

    C#实用教程-操作xml文件 C#实用教程-操作xml文件 引言:什么是xml文件 Xml的特征 Xml的格式 与HTML的区别 对Xml进行操作 读取xml文件: 当前xml文件内容如下: 创建xm ...

  9. 写了一个操作XML文件的类

    一个操作XML文件的类..部份功能在完善中~~~~ using System; using System.Collections.Generic; using System.Text; using S ...

最新文章

  1. day 33(套接字,TCP 与 UDP)
  2. java的外部引用_Java 调用外部程序
  3. LDAP用户验证(Spring-LDAP)
  4. java汉字如何通过字节传输,求助,java中怎么用字节流读写汉字
  5. 外部jar包_大数据系列之PySpark读写外部数据库
  6. 10截图时屏幕变大_解锁电脑更多的截屏姿势:Win 10中自带的七种截图方法
  7. java array和数组_Java:数组和Arrays类的使用
  8. SQL2005开发版下载地址
  9. 天线年会 闭幕式 ppt_OracleVS谷歌–闭幕式,陪审团审议版权阶段
  10. 英语学习框架(一) 英语音标
  11. 重磅!Spring Cloud 生态再添新套件:Spring Cloud Tencent
  12. C#练习题答案: 卡塔劳尔【难度:1级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战
  13. 计算机绘图图层基本线性,计算机绘图基础-第10章 尺寸标注.ppt
  14. 根据坐标点在图片上标记
  15. 如何刷机:iphone8锁屏密码错误多次,手机停用,连接iTunes,磁盘已满,双重认证弊端!
  16. 9 摄像头视频实时传输
  17. gitlab Push 异常:commiter(xxx)不是GitLab中的中文名
  18. 如何选择企业即时通讯软件
  19. 液晶显示器电源板工作原理
  20. Python编程写的圣诞树|一共六款|快拿去送给心爱的人吧

热门文章

  1. tablib把数据导出为Excel、JSON、CSV等格式的Py库(写入数据并导出exl)
  2. Eclipse中如何修改SVN的地址
  3. 在SqlServer中把多个job生成一个sql脚本
  4. 【.NET Core项目实战-统一认证平台】第三章 网关篇-数据库存储配置(1)
  5. ng机器学习视频笔记(十四) ——推荐系统基础理论
  6. 6.24AppCan移动开发者大会价值30万的展示机会归了谁?
  7. java如何在一个有序的数组类插入一个数!
  8. 两段式状态机不可能完成的任务
  9. 延迟或计划邮件的发送(zz.is2120)
  10. 系统架构设计师教程学习随笔 (计算机与网络基础知识--操作系统基础知识)