2016-02-17 25 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