getElementsByTagName с MSXML6 и DOMDocument60

Я обновляю свой проект с MSXML4 до MSXML6, и у меня возникают проблемы с поиском правильного использования getElementsByTagName в сочетании с DOMDocument60.

Я звоню в веб-сервис, используя код, похожий на этот...

Dim objDOM As New MSXML2.DOMDocument60
Dim objXMLHTTP As New MSXML2.XMLHTTP60
Dim objResponse As MSXML2.DOMDocument60

Dim XMLStr As String
XMLStr = "<?xml version=""1.0"" encoding=""utf-8""?>" & vbCrLf
XMLStr = XMLStr & "<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">"
XMLStr = XMLStr & "<soap:Body>"
XMLStr = XMLStr & "<RefreshUserExpiryInformation xmlns=""http://localhost/myservices/"">"
XMLStr = XMLStr & "<EncryptedCheckKey>2FEE026</EncryptedTBSSerialNo>"
XMLStr = XMLStr & "</RefreshUserExpiryInformation>"
XMLStr = XMLStr & "</soap:Body>"
XMLStr = XMLStr & "</soap:Envelope>"

With objDOM
    .async = False
    .loadXML XMLStr
End With

With objXMLHTTP
    .Open "POST", "http://localhost/myservices/TBSV1.asmx", False
    .setRequestHeader "Content-Type", "text/xml; charset=utf-8"
    .setRequestHeader "SoapAction", "http://localhost/myservices/RefreshUserExpiryInformation"
    .send objDOM.XML
End With

Set objDOM = Nothing
Set objResponse = objXMLHTTP.responseXML

Этот текст ответа, когда я отлаживаю результат (ResponseText)...

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <RefreshUserExpiryInformationResponse xmlns="http://localhost/myservices/">
      <RefreshUserExpiryInformationResult>2020-06-30T00:00:00</RefreshUserExpiryInformationResult>
    </RefreshUserExpiryInformationResponse>
  </soap:Body>
</soap:Envelope>

С MSXML4 я делал что-то вроде этого...

MsgBox objResponse.getElementsByTagName("RefreshUserExpiryInformationResult").Item(0).Text

При использовании объявлений MSXML6 и DOMDocument60 getElementsByTagName возвращает "Переменная объекта или переменная блока не установлена".

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

0 ответов

Другие вопросы по тегам