在mule esb中提取和更改xml中的一个字段

时间:2016-02-17 04:11:59

标签: xml mule

这是我的xml。 我只需要用这个condn改变一个字段:if field.id == x then event.id = y。除此之外,每个人都是一样的。

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

如何以最小的努力实现这一目标, 任何帮助表示赞赏。 TIA

3 个答案:

答案 0 :(得分:1)

以下是我使用的解决方案:

XML to DOM - &gt;返回类: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");
}

答案 1 :(得分:0)

您可以将Groovy组件与以下脚本一起使用作为示例:

def root = new XmlSlurper().parseText(payload)
if (root.event.'field-changes'.field.@id == 'VICT_GATE') {
  root.event.@id = "BUS_GATE_IN";
}

return groovy.xml.XmlUtil.serialize(root)

答案 2 :(得分:0)

您可以使用MuleESB中的XPath / XQuery支持读取值,计算表达式并根据条件设置值。有关详细信息,请参阅这些链接 -

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

所以,这可能是这样做的一种方式 - 1.根据xpath表达式field.id和event.id读入属性值并分配给变量,比如f和e

  1. 将field.id与所需的值进行比较,例如r

  2. 根据上述表达式的值,为e指定一个新值n