Переменная в CDATA в Scala

Есть ли способ добавить переменную в раздел cdata в scala

val reason = <reason><![CDATA[ {failedReason} ]]></reason>

Ответ 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> 

Ответ 2

Это может быть еще проще:

val reason = <reason>{scala.xml.PCData(failedReason)}</reason>