Заменить текст узла на Mule & groovy - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь заменить текстовое значение узла, используя преобразователь скриптов groovy в 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 голосов
/ 26 июня 2018

Пошли с этим в конце, это получит узел и заменит текстовое значение

 <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>
0 голосов
/ 26 июня 2018

просто посмотрите документацию для org.dom4j.tree.DefaultElement

нет метода setTextContent() ... но есть метод setText()

...