VBScript, MSXML и пространства имен

Все, кажется, хотят сказать Вам, что необходимо делать вместо того, чтобы просто ответить на вопрос.

проблема состоит в том, что Вы выполняете модуль как '__ основной __' путем передачи mod1.py как аргумента интерпретатору.

От PEP 328:

Относительный импорт использует модуль __ имя __ атрибут, чтобы решить что положение модуля в иерархии пакета. Если имя модуля не содержит информации о пакете (например, это установлено на '__ основной __'), тогда, относительный импорт разрешен, как будто модуль был высокоуровневым модулем, независимо от того, где модуль на самом деле расположен в файловой системе.

В Python 2.6, они добавляют способность сослаться на модули относительно основного модуля. PEP 366 описывает изменение.

Обновление : По словам Nick Coghlan, рекомендуемая альтернатива должна выполнить модуль в пакете с помощью переключателя-m.

5
задан Xetius 29 July 2009 в 11:57
поделиться

1 ответ

Вы используете неправильное объявление пространства имен.

В вашем 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 не требуется.

10
ответ дан 18 December 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: