如何从AutoIT中处理MSXML中的XPATH查找失败



我正在解析从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

相关内容

  • 没有找到相关文章

最新更新