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, но я не могу понять это.