2017-04-26 117 views
1

我在尝试使用WSO2 ESB版本4.9.0来丰富XML-Node的文本。wso2 esb在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来做这个改变。

回答

1

在你的第二个充实,尝试更换目标类型从身体到定制:

<enrich> 
    <source type="property" property="uri.var.processId" /> 
    <target action="replace" type="custom" xpath="//order.id/text()" /> 
</enrich> 
+0

我收到以下错误,当我使用类型=“自定义”:EnrichMediator无效的目标对象是丰富 (我没有做任何事情之间这两个充实调解员一样,所以我不知道为什么会以错误结束) – Lesrac

+1

我不得不additi onaly为XML设置一个空的Namespace: - 现在它正在工作。谢谢 – Lesrac

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>