Все, кажется, хотят сказать Вам, что необходимо делать вместо того, чтобы просто ответить на вопрос.
проблема состоит в том, что Вы выполняете модуль как '__ основной __' путем передачи mod1.py как аргумента интерпретатору.
От PEP 328:
Относительный импорт использует модуль __ имя __ атрибут, чтобы решить что положение модуля в иерархии пакета. Если имя модуля не содержит информации о пакете (например, это установлено на '__ основной __'), тогда, относительный импорт разрешен, как будто модуль был высокоуровневым модулем, независимо от того, где модуль на самом деле расположен в файловой системе.
В Python 2.6, они добавляют способность сослаться на модули относительно основного модуля. PEP 366 описывает изменение.
Обновление : По словам Nick Coghlan, рекомендуемая альтернатива должна выполнить модуль в пакете с помощью переключателя-m.
Вы используете неправильное объявление пространства имен.
В вашем XML у вас есть
http://www.w3.org/2003/05/soap-envelope
, но в вашем скрипте вы используете
http://schemas.xmlsoap.org/soap/envelope/
Это работает для меня:
xml.setProperty "SelectionNamespaces", "xmlns:s='http://my.domain.com/' xmlns:soap='http://www.w3.org/2003/05/soap-envelope'"
' ...
Set redirectUrl = xml.selectSingleNode("/soap:Envelope/soap:Body/s:GetMsisdnResponse/s:GetMsisdnResult/s:RedirectUrl")
На другом примечание - я бы попытался сохранить строки, на которые влияет оператор On Error Resume Next
, на уровне абсолютного минимума. В идеале это действует только для одной критической строки (или вы заключите критическую секцию в Sub
). Это значительно упрощает отладку .
Например, вам не хватает оператора Set
в Set redirectUrl = ...
. При включении Error Resume Next
этот процесс не сработает.
Попробуйте
' this is better than loadXML(xmlHttp.responseText)
xmlDocument.load(xmlHttp.responseStream)
If (xmlDocument.parseError.errorCode <> 0) Then
' react to the parsing error
End If
Xpath = "/soap:Envelope/soap:Body/s:GetMsisdnResponse/s:GetMsisdnResult/s:RedirectUrl"
Set redirectUrl = xml.selectSingleNode(Xpath)
If redirectUrl Is Nothing Then
' nothing found
Else
' do something
End If
См. - нет On Error Resume Next
не требуется.