Мне нужно повторить результат БД.
Я использовал dss для получения данных из БД. Теперь результаты приходят в формате xml. Но мой поток не входит в итерационный посредник. Я попробовал с помощью онлайн-инструмента XPath после удаления тега xml из выходных данных, способных сформировать выражение.
Действительно ли необходимо удалить тег <?xml version='1.0' encoding='UTF-8'?>
из вывода?
Если да, то как это убрать?
Я использую WSO2 MI 4.1.0.
Ниже приведен пример вывода моего вызова БД:
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<Entries xmlns = "TotscoDS">
<statusCodePresent>429
</statusCodePresent>
<statusCodePresent>429
</statusCodePresent>
<statusCodePresent>429
</statusCodePresent>
<statusCodePresent>429
</statusCodePresent>
<statusCodePresent>429
</statusCodePresent>
</Entries>
</soapenv:Body>
</soapenv:Envelope>
<payloadFactory media-type = "xml">
<format>
<getStates>
<msID>$1</msID>
</getStates>
</format>
<args>
<arg evaluator = "xml" expression = "$ctx:MI_ID"/>
</args>
</payloadFactory>
<property name = "messageType" scope = "axis2" type = "STRING" value = "text/xml"/>
<header name = "Action" scope = "default" value = "retrieveStateDetails"/>
<call>
<endpoint key = "TotscoEP" />
</call>
<log level = "full" />
<iterate expression = "//Entries" xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/">
<target>
<sequence>
<property expression = "//statusCodePresent/text()" name = "statusCodePresent" scope = "default" type = "STRING"/>
<log level = "custom">
<property expression = "fn:concat($ctx:HUBMessageID,' : StatusCode = ',$ctx:statusCodePresent)" name = "Message"/>
</log>
<filter regex = "false" source = "boolean(get-property('statusCodePresent'))">
<then>
<log level = "custom">
<property expression = "fn:concat($ctx:HUBMessageID,' : No Status Code from RCP')" name = "Message"/>
</log>
</then>
<else/>
</filter>
</sequence>
</target>
</iterate>
[Response in log](https://i.sstatic.net/XIohISqc.png)
Ваше имя и Xpath - это проблема. Измените выражение Iterate, как показано ниже.
<iterate expression = "//dss:statusCodePresent" xmlns:dss = "TotscoDS">
<target>
<sequence>
.
.
.
</sequence>
</target>
</iterate>