Как обработать неудачный поиск XPATH в MSXML от AutoIT?

Я анализирую часть XML, возвращенную из веб-API. Я ищу конкретный узел. Если этот узел не существует, согласно MSXML документации, он возвращает null.

Проблема в том, что я не знаю, как проверить значение null в AutoIT. Я прочитал онлайн-документ по API для 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

person mydoghasworms    schedule 31.01.2014    source источник


Ответы (2)


Вы можете использовать IsObj(), чтобы проверить, был ли возвращен допустимый объект:

If Not IsObj($oNode) Then
    MsgBox(0, 'ERROR', 'Node is invalid!')
EndIf
person Andreas    schedule 02.02.2014

Я как бы нашел быстрое решение моей проблемы.

Используя ObjName(), я могу проверить имя возвращенного COM-объекта, которое будет IXMLDOMElement, если оно успешно:

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