这是我的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
答案 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
将field.id与所需的值进行比较,例如r
根据上述表达式的值,为e指定一个新值n