51Testing软件测试论坛

标题: 请教读取、输出XML信息及添加XML对象?---有附件供大家练兵 [打印本页]

作者: yuedao    时间: 2007-5-17 20:01
标题: 请教读取、输出XML信息及添加XML对象?---有附件供大家练兵
E盘有附件中的XML文件,请下载。
想获取里面("/page/portfolio/entry/symbol下的---600002.ss这个---数据,不知该如何写代码?

自己写的代码总提示 : The"e:\search.xml"XMLFile object was not found 的错误。怎样把这个XML文件添加到对象库?
用检查点可以实现:Insert--Checkpoint--XML Checkpoint,这样能把这个XML文件添加到对象库,其它方法呢?
是用代码能添加对象吗?


有上千个这样的XML文件,不用代码写简直....

Set XMLObj = XMLUtil.CreateXML() -----
XMLObj.LoadFile("E:\search.xml") ---------这两句具体什么意思我也不清楚,就是从帮助上搞的,添上去也没用
Set xml_data = XMLFile("E:\search.xml").GetData
Set children = xml_data.ChildElementsByPath("/page/portfolio/entry/symbol")
eleValue = children.Item(1).Value------------如果对象添加上的话,这里能取到600002.ss 这个值,但除了手工操作,如何把这个XML文件添加到
对象库中?

以上是问题1。
问题2:有1000个这样的XML文件的话又如何做? 将 Set xml_data = XMLFile("E:\search.xml").GetData 里面的文件地址E:\参数化?
问题3:如果XML地址是网络上的URL地址怎么办? 能否直接写 Set xml_data = XMLFile("http:\\www.finance.com\xml\600002.ss").GetData ?

问题4:如何把取到的1000个XML文件上的值保存起来最方便? 放到DataTable里面吗?按运行顺序逐行(1-1000)输出到Datatable中的名称为finance的列中?


sdlkfj1
很不好意思,问了这么多,而且有些是本论坛有也的知识,但自己的水平较低,需要结果真实项目更详细的讲解。。。。期盼高手们的方案!
谢谢。

[ 本帖最后由 yuedao 于 2007-5-17 20:07 编辑 ]
作者: walker1020    时间: 2007-5-18 09:10
请对 XML比较熟悉的朋友帮忙解决一下吧
作者: songfun    时间: 2007-5-18 09:23
我在论坛发了一段xml的例子,你要学会搜索论坛啊!

Option Explicit
Dim xmlStr

xmlLoad ("C:\aa.xml")

Sub xmlLoad (byval strPath)
        Dim xmlDoc,xmlRoot
       
        Set xmlDoc = CreateObject("Microsoft.XMLDOM")
        xmlDoc.async = False
        xmlDoc.load strPath
        If xmlDoc.parseError.errorCode <> 0 Then       
                MsgBox "XML loaded Failed.The reason is:" & xmlDoc.parseError.reason
                Exit Sub
        End If        
        Set xmlRoot = xmlDoc.documentElement
        xmlStr = xmlRoot.nodeName & ": " & xmlRoot.nodeValue
        If xmlRoot.childNodes.length <> 0 Then
                xmlRecursive xmlRoot
        End If       
        MsgBox xmlStr
End Sub

Sub xmlRecursive(byval xmlNode)
        Dim xmlChildNode,xmlChildNodeLen,iLen
       
        xmlChildNodeLen = xmlNode.childNodes.length       
        If xmlChildNodeLen = 0 Then Exit Sub       
        For iLen = 0 To xmlChildNodeLen - 1
                Set xmlChildNode = xmlNode.childNodes.item(iLen)
                xmlStr = xmlStr & Chr(13) & Chr(10) & xmlChildNode.nodeName & ": " & xmlChildNode.nodeValue
                If xmlChildNode.childNodes.length <> 0 Then
                        xmlRecursive xmlChildNode
                End If               
        Next       
End sub
作者: yuedao    时间: 2007-5-18 09:49
sdlkfj1
我之前确实搜索了,而且看到上面的这段儿代码,但我实在是看不懂其含义,而且现在没有足够的时间去细细研究,有闲点儿的朋友帮忙解释一下吗?多谢了~sdlkfj8
后来还是按照自己的思路进行的,
另外我把楼上这段儿代码复制后QTP运行,会弹出一该XML结构及内容的提示条,只能手动关闭,不明白是干嘛用的...
另外
.......................
Set xml_data = XMLFile("E:\search.xml").GetData
Set children = xml_data.ChildElementsByPath("/page/portfolio/entry/symbol")
eleValue = children.Item(1).Value
......................
这3行代码对吗?我觉得这样取值挺方便啊? 但必须先把E:\search.xml这个对象添加到对象库。
或者能录制时添加XML对象吗?如果可以的话先跑1000次把1000个XML文件都添加到对象库中问题就解决了,直接用上面3行代码就OK。





sdlkfj7 麻烦谁给解释一下楼上版主发的代码的含义,谢谢。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2