2014-01-31 71 views
0

我正在解析從Web API返回的一段XML。我正在尋找一個特定的節點。如果該節點不存在,則根據MSXML documentation,它將返回空值。如何處理來自AutoIT的MSXML中失敗的XPATH查找?

問題是,我不知道如何在AutoIT中檢查null。我已經閱讀online API doc for Null,但是當我使用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 

回答

0

你可以使用IsObj()來測試是否返回一個有效的對象:

If Not IsObj($oNode) Then 
    MsgBox(0, 'ERROR', 'Node is invalid!') 
EndIf 
+0

更好,謝謝。 – mydoghasworms

0

我有一種找到了我的問題的快速解決方法。

通過使用ObjName(),我可以檢查COM對象返回的名稱,這是IXMLDOMElement如果它是成功的:

If ObjName($node) = "IXMLDOMElement" Then 
    MsgBox(0, "", "Success") 
Else 
    MsgBox(0, "", "Failure") 
EndIf