Ответ 1
Я не уверен, что вы можете получить это через встроенную поддержку XML, но вы можете сделать что-то вроде:
scala.xml.XML.loadString("<reason><![CDATA[%s]]></reason>".format(failedReason))
Таким образом, вы теряете некоторые проверки времени компиляции, но он должен предоставить вам элемент xml с данными, которые вы ищете. Поскольку он возвращает scala.xml.Elem
, вы также можете вставлять результат в большую структуру XML.
ИЗМЕНИТЬ
Подумав об этом чуть больше, следующим может быть метод beter (и менее хрупкий) для этого. Он ограничивает часть свободного текста только CDATA, сводя к минимуму потенциал для несбалансированных выражений.
<reason>{ scala.xml.Unparsed("<![CDATA[%s]]>".format(failedReason)) }</reason>