你可以嘗試以下配置:
<enricher doc:name="Message Enricher">
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/java
%var evaluation = "ABC"
%var substitution = "BC"
%function substitute(serverVal)(
serverVal when serverVal != evaluation otherwise substitution
)
---
[email protected] mapObject {
($$): substitute($)
}
]]></dw:set-payload>
</dw:transform-message>
<enrich source="#[payload.Server]" target="#[variable:param1]"/>
<enrich source="#[payload.Server2]" target="#[variable:param2]"/>
</enricher>
不管如何在XML源很多屬性,你只需要添加相應的富集元素。
例如,你有一個新的XML源:<Interface Server="ABC" Server2="DEF" Server3="ABC"/>
然後你只需要添加:<enrich source="#[payload.Server3]" target="#[variable:param3]"/>
設置新的變量。
備註:DataWeave是EE功能之一。對於CE,您可以將其替換爲其他變壓器,例如:Groovy。在下面的例子中,有效載荷是以String的形式出現的。使用byte-array-to-string-transformer
將原始應用程序/ xml格式轉換爲字符串。
<scripting:component doc:name="Groovy">
<scripting:script engine="Groovy"><![CDATA[def attributeMap = new XmlSlurper().parseText(payload).attributes()
attributeMap.each() {
it.value = it.value == "ABC" ? "BC" : it.value
}
payload = attributeMap]]></scripting:script>
</scripting:component>
不錯的辦法,我給一個去 – elwis
嗯,我得到的SAXParser例外情況是,只有DataWeave - 因爲我跑CE? – elwis
* DataWeave *是** EE **功能之一。我更新了使用Groovy作爲替換的答案。 –