WSO2 ESB无法提取soap元素值

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

我无法从以下肥皂信封中获取clinID的值:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tfom="https://bur.cdmarf.ru/dss/services/tfoms">
      <soapenv:Header/>
      <soapenv:Body>
         <tfom:get_single_inserted_branch_by_id>
            <tfom:clinicID>6048820</tfom:clinicID>
         </tfom:get_single_inserted_branch_by_id>
      </soapenv:Body>
</soapenv:Envelope>

<property xmlns:tfom="https://bur.cdmarf.ru/dss/services/tfoms"
                   name="CLINIC_ID"
                   expression="//clinicID/text()"
                   scope="axis2"
                   type="STRING"/>

这是我记录CLINIC_ID值的方式:

<log level="custom">
    <property name="1" expression="get-property('CLINIC_ID')"/>
</log>

这是CLINIC_ID的值:

1 = null

wso2 wso2esb esb
3个回答
3
投票

问题在于你的xpath表达式。如果你使用

<property xmlns:tfom="https://bur.cdmarf.ru/dss/services/tfoms"
                   name="CLINIC_ID"
                   expression="//tfom:clinicID/text()"
                   scope="axis2"
                   type="STRING"/>

它应该工作。缺少部分是表达式中的名称空间前缀。

您可以使用http://www.freeformatter.com/xpath-tester.html等在线工具尝试xpath表达式的准确性

我确实使用了它,并且能够将clinicID值作为输出。


0
投票

您可以使用$ body synapse xpath变量来访问有效负载的主体。因此对于属性调解器的表达式将是

$身体/ tfom:get_single_inserted_branch_by_id / tfom:clinicID /测试()


0
投票

如果您的发送请求如下格式

   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.samples" xmlns:xsd="http://services.samples/xsd">  
    <soapenv:Header/>  
     <soapenv:Body>  
       <ser:getQuote>  
     <!--Optional:-->  
       <ser:request>  
     <!--Optional:-->  
   <xsd:symbol>wso2</xsd:symbol>  
  </ser:request>  
</ser:getQuote>  

你需要写一个代理

         <property xmlns:m1="http://services.samples/xsd"
               xmlns:m0="http://services.samples"
               name="symbol"
               expression="//m0:getQuote/m0:request/m1:symbol"
               scope="default"
               type="STRING"/>
     <property xmlns:ns="http://org.apache.synapse/xsd"
               name="REST_URL_POSTFIX"
               expression="fn:concat('?symbol=',get-property('symbol1'))"
               scope="axis2"
               type="STRING"/>

有关详细信息,请参阅herehere

© www.soinside.com 2019 - 2024. All rights reserved.