XPathExtract#

Действие XPathExtract осуществляет поиск и извлечение содержимого XML документа по пути XPath, указанному в качестве параметра.

Параметры:

Название

Допустимые значения

Описание

xpath

Строка

Выражение XPath, обязательный параметр

namespaces

Список элементов вида: - prefix - префикс пространства имен; uri - uri пространства имен

Необязательный параметр. Если в XML документе определено несколько пространств имен, то необходимо либо их определить в данном параметре, либо использовать функцию local-name для игнорирования пространств имен

result_type

STRING; NODE

Необязательный параметр. STRING - преобразует содержимое, извлеченное из XML документа, в строку; NODE - содержимое, извлеченное из XML документа, остается в формате XML. По умолчанию: STRING.

Пример:

chains:
      request_chains:
      - actions:
        - action: XPathExtract
          params:
            xpath: //*[local-name() = 'XmlInputString']
          actions:
            - action: XsdValidation
              params:
                validation_schema: {type: file, path: schemes/request_schema.xsd}
        - action: XPathExtract
          params:
            xpath: "//SOAP-ENV:Envelope"
            namespaces:
               - prefix: SOAP-ENV
                 uri: "http://schemas.xmlsoap.org/soap/envelope/"
          actions:
            - action: XsdValidation
              params:
                validation_schema: {type: file, path: schemes/request_schema.xsd}
        message: $clj_request_body

В данном примере показывается, как двумя способами можно извлечь из SOAP-конверта элемент XmlInputString и произвести его валидацию из объекта:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
   <XmlInputString xmlns="http://erib.web.services.org/"><?xml version='1.0' encoding='utf-8'?>
    <message>
     <ip>127.0.0.1</ip>
     <operation>loginblock</operation>
     <body>
       <authToken>user1</authToken>
       <isAuthenticationCompleted>true</isAuthenticationCompleted>
     </body>
    </message>
   </XmlInputString>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>