为什么我能从一个XML节点获取文本而不能从其兄弟节点获取文本?我现在必须做错事,我实际上已经让它工作了一段时间,但我当时选择了错误的兄弟姐妹。下面的代码返回AND将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作为我们安全的预防措施。
谢谢!
编辑: 我很快就会发布答案。
答案 0 :(得分:2)
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