Страницы: 1
RSS
Получить данные с XML страницы, с множеством однотипных параметров
 
Доброго времени суток.
Необходимо в VBA получить данные полученные GET запросом в виде XML страницы, и присвоить переменным их значения. почитав форум сделал "нечно"
Код
Sub test()
ID = 258
Set HTTP = CreateObject("MSXML2.XMLHTTP")
APIkey = "254BAC06-***часть_ключа_скрыта***-572F8605A51C"
sURL1 = "http://***часть_ссылки_скрыта***api/request/" & ID & "?OPERATION_NAME=GET_REQUEST&TECHNICIAN_KEY=" & APIkey
HTTP.Open "GET", sURL1, True
HTTP.Send

otvet = HTTP.responseText
'MsgBox (otvet)


Do While HTTP.readyState <> 4
    DoEvents
Loop
   Set xmlDoc = HTTP.responseXML
   
ID = xmlDoc.SelectSingleNode("//Details/parameter/value").Text
Requester = xmlDoc.SelectSingleNode("//Details/parameter/value").Text
    MsgBox ("ИД:" & ID & "  Заявитель " & Requester)

End Sub

Макрос отрабатывает верно, за исключением присвоения переменным нужных значений (не знаю как правильно задать)
Фрагмент отдаваемого XML:
Код
<Details>
<parameter>
   <name>workorderid</name>
   <value>258</value>
</parameter>

<parameter>
   <name>requester</name>
   <value>Name</value>
</parameter>

<parameter>
   <name>createdtime</name>
   <value>1508744421776</value>
</parameter>

<parameter>
   <name>duebytime</name>
   <value>-1</value>
</parameter>

<parameter>
   <name>responseduebytime</name>
   <value>-1</value>
</parameter>

Сейчас:
  ID = 258
  Requester = 258

Хотелось бы получить:
  ID = 258
  Requester = Name
  и так далее для остальных значений

Файл приложить не могу, т.к. его просто нет)
Буду благодарен за любую помощь
Изменено: wlad1164 - 31.10.2017 00:07:27
 
Медленно пытаюсь разобраться с этим пока что успехов не достиг значимых успехов не достиг
 ID = xmlDoc.SelectSingleNode("//Details/parameter[name='workorderid']").Text
 Requester = xmlDoc.SelectSingleNode("//Details/parameter[name='requester']").Text
Результат :
 ID = workorderid 258
 Requester = requester Name

Осталось как то избавится от того что ДО пробела (включая пробел)  
Изменено: wlad1164 - 31.10.2017 00:37:46
 
Вы это ищите?
Код
    Set X = xmlDoc.SelectSingleNode("//Details/parameter[name='workorderid']")
    If Not X Is Nothing Then
        Id = X.LastChild.Text
    End If

    Set X = xmlDoc.SelectSingleNode("//Details/parameter[name='requester']")
    If Not X Is Nothing Then
        Requester = X.LastChild.Text
    End If
 
Спасибо! Вроде именно то что нужно)
Страницы: 1
Наверх