долгое время читатель, но первый пост здесь.Любая помощь очень ценится!
Я работаю над шабером данных, чтобы получить рыночные результаты наших клиентов от оператора сетки, и для этого мне нужна серия запросов xml.Я могу подключиться, аутентифицироваться и получить ответ на мой запрос, используя схему SOAP (требуется оператором сетки).Тем не менее, когда я пытаюсь загрузить XML-строку, полученную с сервера, в объект DOMDocument60 с помощью функции LoadXML, он удаляет все узлы из ответа и приводит к XML-документу только с заголовком на одном узле и объединениемвсе значения хранятся во всех узлах строки во втором узле.
Следовательно, я не могу извлечь нужные мне значения.Они имеют различную длину, и я не знаю, когда заканчивается одно значение, а начинается другое.Кроме того, поскольку имена узлов были удалены, когда я пытаюсь получить список узлов всех узлов с именем «DSRSRREGAwardHourly», я получаю пустой список.
XML, полученный от сервера после запроса (оставил только один из часовых узлов для упрощения)
<?xml version='1.0' encoding='UTF-8'?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<QueryResponse xmlns="http://emkt.pjm.com/emkt/xml">
<DSRSRREGAwardSet>
<DSRSRREGAward day="2018-12-01" location="1960147390">
<DSRSRREGAwardHourly hour="1">
<SynchOfferMW>0.5</SynchOfferMW>
<RegOfferMW>0</RegOfferMW>
<SelfScheduledMW>0</SelfScheduledMW>
<SynchAwardedMW>0</SynchAwardedMW>
<RegAwardedMW>0</RegAwardedMW>
<RegOfferPriceUsed>0</RegOfferPriceUsed>
<RegdOfferMW>0</RegdOfferMW>
<RegdMW>0</RegdMW>
</DSRSRREGAwardHourly>
</DSRSRREGAward>
</DSRSRREGAwardSet>
</QueryResponse>
</Body>
</Envelope>
Соответствующий код VBA, который я использую
'Variable definition
Dim oWinhttp As WinHttpRequest
Dim ReturnXML As MSXML2.DOMDocument60
Dim ItemList As IXMLDOMNodeList
Dim XMLItem As IXMLDOMNode
'Variable initialization
Set oWinhttp = New WinHttpRequest
Set ReturnXML = New MSXML2.DOMDocument60
'Run the query against the server
With oWinhttp
Call .Open("POST", WebURL)
Call .SetRequestHeader("Cookie", "pjmauth=" & tokenStr)
Call .SetRequestHeader("Content-Type", "text/xml")
Call .SetRequestHeader("Content-Length", Len(xmlSubmittal))
Call .Send(xmlSubmittal)
Call .WaitForResponse
'Store the return XML into DOM Document
ReturnXML.async = False
ReturnXML.validateOnParse = False
ReturnXML.LoadXML (.ResponseText)
'Terminate connection
Call oWinhttp.abort
End With
'Extract nodes we are going to need
Set ItemList = ReturnXML.SelectNodes("//DSRSRREGAwardHourly")