2017-04-26 83 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>