用Mule和Groovy替换节点文本

时间:2018-06-26 08:50:53

标签: groovy mule

我正在尝试使用Mule中的常规脚本转换器替换节点的文本值。

我首先使用XML到DOM转换器,然后使用以下内容

<scripting:transformer name="replacePassword">
        <scripting:script engine="Groovy"><![CDATA[import org.dom4j.*
import groovy.xml.DOMBuilder
import groovy.xml.dom.DOMCategory

Node passwordElement = message.payload.getRootElement().selectSingleNode("//*[local-name()=\'Password\']")
passwordElement.setTextContent("xxxxxxxxxxxxx")
return message.payload
]]></scripting:script>
    </scripting:transformer>

但这似乎引发了以下异常

  

根异常堆栈跟踪:groovy.lang.MissingMethodException:否   方法的签名:org.dom4j.tree.DefaultElement.setTextContent()为   适用于参数类型:(java.lan g.String)值:   [xxxxxxxxxxxxx]

我对groovy不太熟悉,我的脚本正确吗?

谢谢

2 个答案:

答案 0 :(得分:1)

只需查看org.dom4j.tree.DefaultElement的文档

没有setTextContent()方法...但是有setText()方法

答案 1 :(得分:0)

最后,将得到一个节点并替换文本值

 <scripting:transformer name="replacePassword">
            <scripting:script engine="Groovy"><![CDATA[
            node = message.payload.getRootElement().selectSingleNode('//*[local-name()=\'Password\'][1]');
            node.text = 'xxxxxxx';
            return message.payload;]]></scripting:script>
        </scripting:transformer>