2

为什么我能够从一个 XML 节点而不是它的兄弟节点获取文本?我现在一定是做错了什么,实际上我曾经让它工作过,但当时我选择了错误的兄弟姐妹。下面的代码返回并将 strRespone 写入我的源代码。但我在下一个得到错误''。

错误:Microsoft VBScript 运行时错误“800a01a8”

所需对象

/preview.asp,第 905 行(行:strAuthCode = strBMLAuthCode.text)

代码:

Dim NodeList, Node, SubNode
Set NodeList = xmlDom.documentElement.selectNodes("onlineresponse/authorizationresponse")

Set strBMLResponse = xmlDom.SelectSingleNode("//response")
    strResponse = strBMLResponse.text
    Response.Write "<!--strResponse: " & strResponse & "-->"


If strResponse = "000" Then '//SUCCESS!!
    Set strBMLAuthCode = xmlDom.SelectSingleNode("//id")
        strAuthCode = strBMLAuthCode.text
        Response.Write "strAuthCode: " & strAuthCode & "<br>"


    Set strBMLAcctNum = xmlDom.SelectSingleNode("//number")
        strAcctNum = strBMLAcctNum.text
        Response.Write "strAcctNum: " & strAcctNum & "<br>"
        strCCNum = strAcctNum

Else ' if strResponse <> '000'...

没有 XML:我想通了.. 将 xml 记录下来作为我们安全的预防措施。

谢谢!

编辑:我会尽快发布答案。

4

1 回答 1

2

你的匈牙利符号很糟糕。您对既是字符串又不是字符串的事物使用“str”前缀,即 strBMLResponse 不是字符串!考虑按如下方式重命名您的值:

Dim xmlResponse
Set xmlResponse = xmlDom.SelectSingleNode("//response")
Dim strResponse
strResponse = xmlResponse.text

其次,您没有错误检查,即您的代码始终假定 Set 始终分配一个有效对象。但是,在实践中可能存在Nothing返回的情况,即

If strResponse = "000" Then
    Dim xmlAuthCode
    Set xmlAuthCode = xmlDom.SelectSingleNode("//litletxnid")
    If Not (xmlAuthCode is Nothing) Then
        Dim strAuthCode
        strAuthCode = xmlAuthCode.text
        Rem ...
    End If
End If

我对您提供的 XML 和您提供的代码进行了一些检查,并且错误不可重现,因此,我假设信息不足。即我猜测xmlDom 的内容实际上并不包含“litletxnid”节点。您需要做一些额外的检查来确认或否认这种情况。

编辑:

感谢您提供更多信息。如前所述,我在使用提供的信息重现问题时遇到了麻烦。litletxnid这意味着需要进行更多故障排除,尤其是在对节点进行深入分析时。您还有其他方法可以实现它,例如:

Dim xmlAuthCode
Set xmlAuthCode = xmlDom.documentElement.firstChild.firstChild
Rem You can add debugging here like view xmlAuthCode.xml
于 2012-09-04T14:08:23.377 回答