我正在解析从Web API返回的XML。我正在寻找一个特定的节点。如果该节点不存在,根据MSXML文档,它将返回null。
问题是,我不知道如何在自动上检查null。我已经阅读了null的在线API文档,但是当我使用autoIt3Wrapper v.2.1.2.9运行脚本时,它无法识别null。
这是一个示例脚本,可以显示我的意思:
$oXMLDOM = ObjCreate("Msxml2.DOMDocument.3.0")
$xml = '<response><error code="1"><![CDATA[ Incorrect password or username ]]></error></response>'
$oXMLDOM.loadXML($xml)
$node = $oXMLDOM.selectSingleNode("/response/error")
MsgBox(0, "", $node.text) ;; No problems
$node = $oXMLDOM.selectSingleNode("/response/token")
;; $node should be 'null' now; how do I check that in AutoIT?
MsgBox(0, "", $node.text) ;; Fails horribly
您可以使用IsObj()
测试是否返回有效的对象:
If Not IsObj($oNode) Then
MsgBox(0, 'ERROR', 'Node is invalid!')
EndIf
我有点为我的问题找到了快速解决方法。
通过使用ObjName()
,我可以检查返回的com对象的名称,如果成功的话,这是IXMLDOMElement
:
If ObjName($node) = "IXMLDOMElement" Then
MsgBox(0, "", "Success")
Else
MsgBox(0, "", "Failure")
EndIf