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>