WSO2EI新的xml标记使用Enrich中介,当xml标记动态获取时



是否可以使用丰富中介器将新的xml标记添加到xml负载中。

我的样本有效载荷-

<courses>
<id>181</id>
<formatted_name>Learning</formatted_name>
<score>0</score>
<status>in_progress</status>
<issued_certificate />
<from_timestamp>1626083705</from_timestamp>
<to_timestamp />
</courses>

新标签将是

<link> www.google.com </link>

我不能使用内联作为源,因为链接是动态获取的。所以我将添加新标签到有效负载,然后添加属性。

<payloadFactory media-type="xml">
<format>
<link xmlns="">$1</link>
</format>
<args>
<arg evaluator="xml" expression="get-property('login_link')"/>
</args>
</payloadFactory>
<property description="Get login link payload" expression="//root/*" name="login_link_xml" scope="default" type="STRING"/>
// get original payload back
<enrich description="Restore original payload">
<source clone="false" property="course_payload" type="property"/>
<target type="body"/>
</enrich>
// assign property as a new node inside the courses
<enrich>
<source clone="true" property="login_link_xml" type="property"/>
<target action="child" type ="custom" xpath="//courses"/>
</enrich>

这在浓缩后提供相同的有效载荷

您可以用不同的方式来完成。使用xpath表达式和函数将"标记"创建为属性类型OM:concat,并使用编码字符

<property name="my_link" value="devintegra.com" scope="default" type="STRING"/>
<property name="linkNode" 
type="OM" 
expression="concat('&lt;link&gt;',get-property('my_link'),'&lt;/link&gt;')" 
scope="default" />

有了这个特性,你可以丰富你的身体:

<enrich>
<source type="property" clone="true" property="linkNode"/>
<target action="child" xpath="//courses"/>
</enrich>

这应该如你所期望的那样有效。

最新更新