如何从 WSO2 MI 中的 dss 输出中删除 <?xml version='1.0' encoding='UTF-8'?> 标签

问题描述 投票:0回答:1

我必须迭代数据库结果。

我使用 dss 从数据库中获取数据。现在结果以 xml 格式出现。但我的流程没有进入迭代中介器。从输出中删除 xml 标签后,我尝试使用 xpath 在线工具来形成表达式。

真的需要从输出中删除标签

<?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)
wso2 wso2-esb wso2-data-services-server wso2-micro-integrator
1个回答
0
投票

你的命名空间和 Xpath 是问题所在。更改迭代表达式如下。

<iterate expression="//dss:statusCodePresent" xmlns:dss="TotscoDS">
  <target>
    <sequence>
.
.
.
    </sequence>
  </target>
</iterate>
© www.soinside.com 2019 - 2024. All rights reserved.