VBScript运行时错误91
我正在尝试使用附带的VB脚本代码获取xml的键、值属性VBScript运行时错误91,vbscript,asp-classic,Vbscript,Asp Classic,我正在尝试使用附带的VB脚本代码获取xml的键、值属性 <configuration> <appSettings> <add key="DeviceConnectionPortNumber" value="5002"/> <add key="VirtualWintalkConnectionPortNumber" value="5100"/> </appSettings> </configuration>
<configuration>
<appSettings>
<add key="DeviceConnectionPortNumber" value="5002"/>
<add key="VirtualWintalkConnectionPortNumber" value="5100"/>
</appSettings>
</configuration>
我已经有一段时间没有处理VBScript了,但我愿意承认,您不能更改“For Each”循环提供给您的枚举值。在.NET中也是如此 更新: 是的,我生锈了,你需要先“设置”,然后才能将对象设置为空 试试这个
Sub Manu_Parse()
Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
objXMLDoc.Load ("c:\Web.Config.xml")
Set appSettingsNode = objXMLDoc.documentElement.FirstChild
Set parameterNodes = appSettingsNode.ChildNodes
For Each parameterNode In parameterNodes
keyName = parameterNode.getAttribute("key")
If keyName = "DeviceConnectionPortNumber" Then
keyVal = parameterNode.getAttribute("value")
'parameterNode = Nothing
Exit For
End If
'parameterNode = Nothing
Next
Set parameterNodes = Nothing
Set sappSettingsNode = Nothing
Set objXMLDoc = Nothing
End Sub
我已经有一段时间没有处理VBScript了,但我愿意承认,您不能更改“For Each”循环提供给您的枚举值。在.NET中也是如此 更新: 是的,我生锈了,你需要先“设置”,然后才能将对象设置为空 试试这个
Sub Manu_Parse()
Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
objXMLDoc.Load ("c:\Web.Config.xml")
Set appSettingsNode = objXMLDoc.documentElement.FirstChild
Set parameterNodes = appSettingsNode.ChildNodes
For Each parameterNode In parameterNodes
keyName = parameterNode.getAttribute("key")
If keyName = "DeviceConnectionPortNumber" Then
keyVal = parameterNode.getAttribute("value")
'parameterNode = Nothing
Exit For
End If
'parameterNode = Nothing
Next
Set parameterNodes = Nothing
Set sappSettingsNode = Nothing
Set objXMLDoc = Nothing
End Sub
为什么在for循环中注释掉parameterNode=Nothing。我认为这将导致内存泄漏,这是我第一次尝试(请参阅更新前的评论)。在代码中保留“Set parameterNode=Nothing”(即未注释)可能会或可能不会成功。就像我说的,我已经生锈了,而且我没有运行环境来测试我的建议。就内存泄漏而言,内存本身不会泄漏。垃圾收集器将处理它。另一方面,一个很好的编程实践是像您一直在做的那样清除未使用的对象。坚持下去。同样,我不确定我注释掉的代码行是否正确。在.NET中,这是无法做到的。为什么在for循环中注释掉parameterNode=Nothing。我认为这将导致内存泄漏,这是我第一次尝试(请参阅更新前的评论)。在代码中保留“Set parameterNode=Nothing”(即未注释)可能会或可能不会成功。就像我说的,我已经生锈了,而且我没有运行环境来测试我的建议。就内存泄漏而言,内存本身不会泄漏。垃圾收集器将处理它。另一方面,一个很好的编程实践是像您一直在做的那样清除未使用的对象。坚持下去。同样,我不确定我注释掉的代码行是否正确。在.NET中,这是不可能做到的。