我正在尝试使用WSO2 ESB版本4.9.0来丰富XML节点的文本。
简单XML:
<enrich>
<source type="inline">
<query><where><order.id>0</order.id></where></query>
</source>
<target type="body" />
</enrich>
富民:
<enrich>
<source type="property" property="uri.var.processId" />
<target action="replace" type="body" xpath="//order.id/text()" />
</enrich>
但输出如下:
<query xmlns="http://ws.apache.org/ns/synapse"><where><order.id>0</order.id></where>SOHBSS-000002</query>
当我期待这个时:
<query xmlns="http://ws.apache.org/ns/synapse"><where><order.id>SOHBSS-000002</order.id></where></query>
当我更加简化给定的XML到<order.id>0</order.id>
来自上面的同一个富集中介时,会给出正确的<order.id xmlns="http://ws.apache.org/ns/synapse">SOHBSS-000002</order.id>
输出。
xpath错了吗?或者我使用丰富的调解员来做一些不适合的事情?
因为XML很简单,所以我试图不让我们的XSLT进行更改。
答案 0 :(得分:1)
在您的第二次充实中,尝试将目标类型从正文替换为自定义:
<enrich>
<source type="property" property="uri.var.processId" />
<target action="replace" type="custom" xpath="//order.id/text()" />
</enrich>
答案 1 :(得分:0)
我在使用命名空间的标签上尝试使用xpath时遇到了一些困难,所以在这里(感谢Lesrac关于xmlns的评论)
<enrich>
<source type="inline">
<query namespace="http://www.fadata.bg/Insurance_Messages/v3.0/xml/">
<where><order.id>0</order.id></where></query>
</source>
<target type="body" />
</enrich>
<enrich>
<source type="property" property="uri.var.processId" />
<target action="replace" type="custom" xpath="//fadata:order.id/text()"
xmlns:fadata="http://www.fadata.bg/Insurance_Messages/v3.0/xml/"/>
</enrich>