2015-05-13 3 views
0

Я вызываю веб-сервис из макроса Excel, но не могу разобрать XML-ответ. Структура ответа выглядит следующим образом:Анализ XML-ответа в VBA

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:typ="http://xmlns.oracle.com/oracle/apps/marketing/commonMarketing/mktImport/model/types/"> 
    <env:Header> 
     <wsa:Action>http://xmlns.oracle.com/oracle/apps/marketing/commonMarketing/mktImport/model//ImportPublicService/getImportActivityLogsResponse</wsa:Action> 
     <wsa:MessageID>urn:uuid:bffbffe9-a379-46bb-8205-7f6b5d15a0f5</wsa:MessageID> 
    </env:Header> 
    <env:Body> 
     <ns0:getImportActivityLogsResponse xmlns:ns0="http://xmlns.oracle.com/oracle/apps/marketing/commonMarketing/mktImport/model/types/"> 
     <ns2:result xsi:type="ns1:ImportServiceLogs" xmlns:ns2="http://xmlns.oracle.com/oracle/apps/marketing/commonMarketing/mktImport/model/types/" xmlns:ns1="http://xmlns.oracle.com/oracle/apps/marketing/commonMarketing/mktImport/model/" xmlns:ns0="http://xmlns.oracle.com/adf/svc/types/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
      <ns1:LogFileName>log-test_contact_01-02_20150422171310_pverma Data File.csv</ns1:LogFileName> 
      <ns1:LogFileContent> 
       <xop:Include href="cid:ec277fd6-76e2-4ae3-9e8b-1b14c446adf8" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> 
      </ns1:LogFileContent> 
      <ns1:ErrorLogFileName>error-test_contact_01-02_20150422171310_pverma Data File.csv</ns1:ErrorLogFileName> 
      <ns1:ErrorLogFileContent> 
       <xop:Include href="cid:d41bacf8-3134-4cd5-80b7-5a68c2b271ed" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> 
      </ns1:ErrorLogFileContent> 
      <ns1:ExceptionLogFileName>exception-test_contact_01-02_20150422171310_pverma Data File.csv</ns1:ExceptionLogFileName> 
      <ns1:ExceptionLogFileContent> 
       <xop:Include href="cid:4aa55e1b-1d4d-48be-bdd0-66200de496ee" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> 
      </ns1:ExceptionLogFileContent> 
      <ns1:BatchId xsi:nil="true"/> 
     </ns2:result> 
     </ns0:getImportActivityLogsResponse> 
    </env:Body> 
</env:Envelope> 

Этот ответ содержит плоские файлы. Я должен разбирать эти файлы из XML. Пожалуйста, предложите любое решение. Помощь будет высоко оценена.

ответ

0

Вы можете использовать MSXML2 и XPath:

Dim xmldoc As Object 
Dim xmlnode As Object 
Set xmldoc = CreateObject("MSXML2.DOMDocument") 
xmldoc.setProperty "SelectionLanguage", "XPath" 
xmldoc.loadXML response '//The XML Response string 
For Each xmlnode In xmldoc.SelectNodes("//*[contains(name(),'LogFileName')]") 
    Debug.Print xmlnode.Text 
Next 

Для раннего связывания эталонного Mictosoft XML v3.0 или v6.0.

Смежные вопросы