51Testing软件测试论坛

标题: 释放XML对象后仍然可以用的问题,请高手指教 [打印本页]

作者: csj    时间: 2010-8-10 15:56
标题: 释放XML对象后仍然可以用的问题,请高手指教
我的外部Function文件里的内容如下:
Function ReadXml(XmlFileName)
Set xmlDoc = CreateObject("MicroSoft.XMLDom") '创建XMLDOM对象
xmlDoc.async = False   

xmlDoc.load (XmlFileName)        ' 加载XML文档

' 检查XML文档是否有错误
If xmlDoc.parseError.errorCode <> 0 Then   
   Set myErr = xmlDoc.parseError
   MsgBox("XML Loads Failed. " & myErr.reason)
Else
        Set rootNode = xmlDoc.documentElement
        set ReadXml=rootNode  
End If

set xmlDoc=Nothing
End Function
即获得根节点,但是再方法末尾set xmlDoc=Nothing把xmlNothing给释放了

脚本中的调用如下
。。。。。。。。。。。。。
set objtofind=ReadXml("D:\getmessage[1].xml" ).SelectSingleNode("//charge/item/payid")
objExcel.Cells(2,12).value="'"+objtofind.text
。。。。。。。。。。。。。。。。。。
结果可以正常运行。在此我想问的是:
1,上面的Function中不是把xmlDoc释放掉了吗,也就是说ReadXml("D:\getmessage[1].xml" )=nothing了,为什么还可以用呢?
2,如果ReadXml("D:\getmessage[1].xml" )没被释放掉,那我该怎么释放这个东西呢?是不是直接set ReadXml("D:\getmessage[1].xml" )=nothing就可以了?

[ 本帖最后由 csj 于 2010-8-10 16:01 编辑 ]
作者: skyzhu    时间: 2010-8-10 16:15
1. 你试试断点。。。set xmlDoc=Nothing。能不能到这里
2. 没看懂你要干什么。。。把rootNode  对象返回出来了,当然正常。。。
作者: csj    时间: 2010-8-10 17:50
标题: 回复 2# 的帖子
什么事断点,给个易懂例子好不?
作者: zhuxi123    时间: 2010-8-11 10:44
标题: 回复 1# 的帖子
在你的Function里面的这一句set ReadXml=rootNode  已经给你的函数赋值了 也就是说ReadXml("D:\getmessage[1].xml" )=nothing是不对的 你只是释放了set xmlDoc=Nothing,xmlDoc才是为nothing的




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