csj 发表于 2010-8-10 15:56:48

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

[ 本帖最后由 csj 于 2010-8-10 16:01 编辑 ]

skyzhu 发表于 2010-8-10 16:15:39

1. 你试试断点。。。set xmlDoc=Nothing。能不能到这里
2. 没看懂你要干什么。。。把rootNode对象返回出来了,当然正常。。。

csj 发表于 2010-8-10 17:50:58

回复 2# 的帖子

什么事断点,给个易懂例子好不?

zhuxi123 发表于 2010-8-11 10:44:06

回复 1# 的帖子

在你的Function里面的这一句set ReadXml=rootNode已经给你的函数赋值了 也就是说ReadXml("D:\getmessage.xml" )=nothing是不对的 你只是释放了set xmlDoc=Nothing,xmlDoc才是为nothing的
页: [1]
查看完整版本: 释放XML对象后仍然可以用的问题,请高手指教