2016-02-17 30 views
0

這是我的xml。 我只需要改變這個condn只有一個字段:if field.id == x然後event.id = y。除此之外everythingelse是相同的。在mule esb中提取和更改xml中的一個字段

<field> 
     <field id="XXXX_GATE" />  
     <field gapptNbr="608" /> 
     <field gapptNbr="609" /> 
     <field-change id="tvdtlsNextStageId" new-value="yard" prev-value="main_in" /> 
    </field> 

我怎樣才能以最小的努力, 任何幫助表示讚賞。 TIA

回答

1

這是我用過的解決方案:

XML DOM的 - >返回分類:org.dom4j.Document

event = message.payload.getRootElement().selectSingleNode('//host-outbound-message/event'); 
field = message.payload.getRootElement().selectSingleNode('//host-outbound-message/event/field-changes/field'); 
if (fieldAttribute.getValue() == 'Xray' ){ 
    eventAttribute.setValue("XRAY_GATE_IN"); 
} 
0

可以使用Groovy組分與下面的腳本作爲示例:

def root = new XmlSlurper().parseText(payload) 
if (root.event.'field-changes'[email protected] == 'VICT_GATE') { 
    [email protected] = "BUS_GATE_IN"; 
} 

return groovy.xml.XmlUtil.serialize(root) 
0

可以使用XPath/XQuery支持在MuleESB中的值來讀取,計算表達式,並設置根據該值條件。看到這些鏈接的詳細信息 -

http://blogs.mulesoft.com/dev/mule-dev/mule-3-6-xml-xpath-xslt-xquery3/ https://docs.mulesoft.com/mule-user-guide/v/3.7/xpath

所以,這可能是做這件事的一種方法 - 基於XPath表達式field.id和event.id並分配在屬性值 1.閱讀到變量,說F和E

  • 比較field.id爲所需的值,比方說ř

  • 基於上述表達式的值,分配一個新的值別回答n到e