WSO2 ESB无法提取soap元素值
我无法从以下soap信封中获取clinicID的值:WSO2 ESB无法提取soap元素值,wso2,wso2esb,esb,Wso2,Wso2esb,Esb,我无法从以下soap信封中获取clinicID的值: <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_
<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"/>
6048820
这是我记录临床ID值的方式:
<log level="custom">
<property name="1" expression="get-property('CLINIC_ID')"/>
</log>
这是临床ID的值:
<log level="custom">
<property name="1" expression="get-property('CLINIC_ID')"/>
</log>
1=零
您可以使用$body synapse xpath变量访问有效负载的主体。所以对于属性的表达式,mediator将是
$body/tfom:get_single_inserted_branch_by_id/tfom:clinicID/test()您可以使用$body synapse xpath变量访问有效负载的主体。所以对于属性的表达式,mediator将是
$body/tfom:get_single_inserted_branch_by_id/tfom:clinicID/test()如果发送请求的格式如下所示
<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>
wso2
你需要写一个代理
<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"/>
有关更多详细信息,请参阅或,如果您的发送请求符合以下格式
<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>
wso2
你需要写一个代理
<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"/>
有关更多详细信息,请参阅或问题在于xpath表达式。如果你使用
<property xmlns:tfom="https://bur.cdmarf.ru/dss/services/tfoms"
name="CLINIC_ID"
expression="//tfom:clinicID/text()"
scope="axis2"
type="STRING"/>
它应该会起作用。缺少的部分是表达式中的命名空间前缀
您可以使用一个在线工具,比如
我确实使用了它,并且能够获得clinicID值作为输出。问题在于xpath表达式。如果你使用
<property xmlns:tfom="https://bur.cdmarf.ru/dss/services/tfoms"
name="CLINIC_ID"
expression="//tfom:clinicID/text()"
scope="axis2"
type="STRING"/>
它应该会起作用。缺少的部分是表达式中的命名空间前缀
您可以使用一个在线工具,比如
我确实使用了它,并且能够获得clinicID值作为输出。试试这种方法
<property name="CLINIC_ID" expression="//*[local-name()='clinicID']/text()" type="STRING" scope="default"/>
试试这种方法
<property name="CLINIC_ID" expression="//*[local-name()='clinicID']/text()" type="STRING" scope="default"/>
我不能用它。因为在这个代理中,我有多个有效负载,其中在arg的有效负载中,我使用如下属性:get属性('CLINIC_ID')或$axis2:CLINIC_ID。例如:对于这个soap,我无法捕获clinicID$1 OK。我的意思是用这个表达式定义一个属性。例如:然后使用该PropertyId[-1234][ESB][2016-06-03 14:25:00134]错误{org.apache.synapse.config.xml.PropertyMediatorFactory}-属性的XPath表达式无效';表达式';:$body/tfom:get\u single\u inserted\u branch\u by\u id/tfom:clinicID/test()我可以这样做
,但它不能解决我的问题,我不能使用它。因为在这个代理中,我有多个有效负载,其中在arg的有效负载中,我使用如下属性:get属性('CLINIC_ID')或$axis2:CLINIC_ID。例如:对于这个soap,我无法捕获clinicID$1 OK。我的意思是用这个表达式定义一个属性。例如:然后使用该PropertyId[-1234][ESB][2016-06-03 14:25:00134]错误{org.apache.synapse.config.xml.PropertyMediatorFactory}-属性的XPath表达式无效';表达式';:$body/tfom:get\u single\u inserted\u branch\u by\u id/tfom:clinicID/test()我可以这样做
,但这并不能解决我的问题