2017-07-18 78 views
0

我從ESB中的端點獲取XML結果。我必須存儲此結果XML並將其發送到API以驗證內容。 validate API會返回一些無效的項目,我必須從XML中刪除這些無效的項目,並再次將XML發送到另一個端點。在WSO2 ESB中刪除XML文件中的幾個節點

我的方法: 現在我正在調用返回XML記錄的端點API。我將它作爲REQUEST_PAYLOAD存儲在Enrich Mediator中。並將其發送到另一端點進行驗證。我再次將驗證端點的結果存儲在屬性中。然後當我通過$ ctx訪問請求有效載荷時:REQUEST_PAYLOAD我正在獲取XML文件。但是我無法將這個XML傳遞給XSLT,因爲我必須根據第二個端點的結果刪除一些項目。

我應該能夠將此XML以及驗證API的結果傳遞給XSLT,以便可以從XML中刪除少量項目並將其發送到其他API。

Example: 
    1st XMl 
    '<Data> 
    <User Name="XYZ"> 
    <DETAILS> 
    <COURSE>IS</COURSE> 
    <YEAR>2016</YEAR> 
    <SUBJECT>COMPUTER SCIENCE<SUBJECT>   
    </DETAILS> 
    </User> 
<User Name="ABC"> 
    <DETAILS> 
    <COURSE>IS</COURSE> 
    <YEAR>2015</YEAR> 
    <SUBJECT>INFO SCIENCE<SUBJECT>   
    </DETAILS> 
    </User> 
</Data>' 

     2nd XML : 
    '<message> ABC user is invalid </message> 
    <value>ABC</value>' 

    Result XML : 
     Remove ABC from the 1st XML 
    '<Data> 
    <User Name="XYZ"> 
    <DETAILS> 
    <COURSE>IS</COURSE> 
    <YEAR>2016</YEAR> 
    <SUBJECT>COMPUTER SCIENCE<SUBJECT>   
    </DETAILS> 
    </User> 
    </Data> ' 
+1

我不知道我理解你的問題。您希望計算機瞭解' ABC用戶無效'作爲刪除<用戶名=「ABC」>「及其後代的指令?!如果我沒有看到你的預期結果,我自己就不會明白。 - 還要注意你的第二個XML格式不正確。 –

回答

0

你有2個屬性類型=「OM」:REQUEST_PAYLOAD和說,從你的驗證API的結果保存在VALIDATION_PAYLOAD

使用充實調解員設置REQUEST_PAYLOAD具有當前消息。對於爲例,如果你的屬性包含SOAP體:

<enrich> 
    <source type="property" property="REQUEST_PAYLOAD"/> 
    <target type="body"/> 
</enrich> 

使用充實調解員VALIDATION_PAYLOAD的內容追加在當前留言中,對於爲例:

<enrich> 
    <source clone="true" xpath="get-property('VALIDATION_PAYLOAD')"/> 
    <target type="body" action="child"/> 
</enrich> 

使用日誌級別=「滿」看到你得到什麼,然後使用xslt中介

0

我可以提出以下建議:在收到來自驗證端點的響應後,您應該將其另存爲另一個屬性validateResponse。接下來,您應該使用Enrich或PayloadFactory將您的$ body替換爲REQUEST_PAYLOAD。然後你可以調用XSLT中介,它將用你的響應來替換你的$ body。你現在有三種有效載荷可供你選擇。