VBScript运行时错误91

VBScript运行时错误91,vbscript,asp-classic,Vbscript,Asp Classic,我正在尝试使用附带的VB脚本代码获取xml的键、值属性 <configuration> <appSettings> <add key="DeviceConnectionPortNumber" value="5002"/> <add key="VirtualWintalkConnectionPortNumber" value="5100"/> </appSettings> </configuration>

我正在尝试使用附带的VB脚本代码获取xml的键、值属性

<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中,这是不可能做到的。