Properties 如何创建动态xPath并执行它?
我收集xpath的字符串Properties 如何创建动态xPath并执行它?,properties,wso2,wso2esb,synapse,Properties,Wso2,Wso2esb,Synapse,我收集xpath的字符串 <property xmlns:t="https://services" name="xPathElemet" expression="fn:concat(//t:SNILS/, $func:element)"/> 我想运行这个xpath并编写一个属性的值 <property name="KEY" expression="get-property('xPathElemet')"/> 但是只接收一个字符串 如何创建属性的xpath 示例
<property xmlns:t="https://services" name="xPathElemet" expression="fn:concat(//t:SNILS/, $func:element)"/>
我想运行这个xpath并编写一个属性的值
<property name="KEY" expression="get-property('xPathElemet')"/>
但是只接收一个字符串
如何创建属性的xpath
示例代码序列:
<iterate continueParent="true" expression="//t:Employee">
<target>
<sequence>
<call-template target="save_element">
<with-param name="key_element" value="Name"/>
</call-template>
</sequence>
</target>
</iterate>
示例代码模板:
<template xmlns="http://ws.apache.org/ns/synapse" name="save_element">
<parameter name="key_element"/> <!--example: "Name"-->
<sequence>
<property name="KEY" expression="fn:concat(//t:Employee/t:SNILS, ':' ,$func:key_element)" scope="default"
type="STRING"/> <!--example: "111-111-111-1:Name"-->
<property name="xPathElemet" expression="fn:concat('//t:Employee/t:', $func:element)"/> <!--example: "//t:Employee/t:Name"-->
<property name="VALUE" expression="get-property('xPathElemet')" scope="default" type="STRING"/> <!--example: Den (Now it does not work)-->
<dbreport>
<connection>
<pool>
<seetings/>
</pool>
</connection>
<statement>
<sql>
<![CDATA[insert into cache( key , value ) values (?, ?);]]></sql> <!--insert new line where key = "111-111-111-1:Name" and value = "Den"-->
<parameter expression="get-property('KEY')" type="VARCHAR"/>
<parameter expression="get-property('VALUE')" type="VARCHAR"/>
</statement>
</dbreport>
</sequence>
</template>
xml示例:
<Employees xmlns="https://services">
<Employee>
<SNILS>111-111-111-1</SNILS>
<Name>Den</Name>
</Employee>
<Employee>
<SNILS>111-111-111-2</SNILS>
<Name>Elena</Name>
</Employee>
</Employees>
111-111-111-1
兽穴
111-111-111-2
埃琳娜
请尝试以下操作,看看是否有效
<property xmlns:t="https://services" name="xPathElemet" expression="fn:concat(//t:SNILS/, $func:element)"/>
<property xmlns:t="https://services" name="xPathfull" expression="fn:concat(get-property('xPathElemet'),'/text()')"/>
<property name="KEY" expression="get-property('xPathfull')"/>
代码中缺少的是引用给定xpath参数的/text()
。请尝试使用此功能
就你而言:
<property xmlns:t="https://services" name="xPathElemet" expression="fn:concat(//t:SNILS/, $func:element)"/>
<property name="KEY" expression="evaluate(get-property('xPathElemet'))"/>
您可以在这里找到更多信息,我首先需要为Xpath构建字符串,然后执行它。这对我有什么帮助?那么你想要的是显示相应的值而不仅仅是xpath?我没有预先准备好的xPpath,我给模板赋值,然后构建xPpath,我需要得到的值我已经修改了答案,请检查它是否有效,您可能需要根据返回的值稍微更改代码,但基线是在xpath文本之后包含/text(),您需要做的是包含以下内容//t:SNILS/、$func:element和“/text()”,因此最终的xpath类似于“//m0:getQuote/m0:request/m0:Id/text()”