在输出中的xml标签中获取不需要的URL。 BPEL Oracle SOA 11g

时间:2016-08-05 06:45:33

标签: xml soa jdeveloper bpel oracle-soa

在我的BPEL中,我在catch块中发现了一个错误。在catch块中,我有一个assign活动,它将输入的有效负载(数据)映射到故障变量并填充jms队列。从该jms队列中,还有一个服务接收数据并发送错误邮件。 现在在错误邮件中我将有效负载作为:

<sal:salesUser xmlns:sal="http://www.mycompany.com/schemas/SalesUserMessage"> <!--Optional: -->
<sal1:userID xmlns:sal1="http://www.mycompany.com/schemas/SalesUserObject">123ABC</sal1:userID>
</sal:salesUser>

但是,如果我检查流量跟踪,有效载荷看起来像这样,我相信应该在我的邮件中没有URls的情况下得到以下数据:

<sal:syncSalesUser>
<!-- Optional:
                 -->
<sal1:userID>123ABC</sal1:userID>
<!-- Optional:
                 -->
</sal:syncSalesUser>

请告诉我为什么我在邮件的xml标签中获取网址。

PFB我的黑色指定部分:

<catch faultName="bpelx:remoteFault" faultVariable="RuntimeFaultVar">
  <sequence name="seq_RemoteFault">
    <assign name="assign_RemotefaultMessage">
      <copy>
        <from expression="oraext:get-content-as-string(bpws:getVariableData('receiveInput_InVar','userNotify','/ns22:userNotify/ns22:payload/ns22:user'))"/>
        <to variable="FaultMessage" part="payload"
            query="/ns7:FaultSchema/ns7:FaultMessage/ns7:Payload"/>
      </copy>
    </assign>
    <invoke name="publish_RemoteFaultToQueue"
            partnerLink="publish_ErrorToQueue"
            portType="ns3:Produce_Message_ptt" operation="Produce_Message"
            inputVariable="invoke_jms_publish_ErrorToQueue"/>
    <terminate name="Terminate"/>
  </sequence>

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您需要所需的输出,则应考虑使用xquery来删除所有名称空间。

尝试下面的xquery:

xquery version "1.0" encoding "Cp1252";
(:: pragma  parameter="$anyType1" type="xs:anyType" ::)
(:: pragma  type="xs:anyType" ::)

module namespace xf="http://tempuri.org/Cancel_Order/RemoveNamespace";

declare function xf:strip-namespace($e as element())as element()
{element { fn:QName("",fn:local-name($e)) }
{ for $child in $e/(@*,node())
 return  
 if ($child instance of element())
    then xf:strip-namespace($child)
       else $child
       }
 };

希望有所帮助