展開する変数をscalaのcdataセクションに配置する方法はありますか?
val reason = <reason><![CDATA[ {failedReason} ]]></reason>
それはさらに単純かもしれません:
val reason = <reason>{scala.xml.PCData(failedReason)}</reason>
ネイティブXMLサポートを介してそれを取得できるかどうかはわかりませんが、次のようなことができます。
scala.xml.XML.loadString("<reason><![CDATA[%s]]></reason>".format(failedReason))
その方法でコンパイル時の検証の一部が失われますが、探しているデータを含むxml要素が得られるはずです。を返すためscala.xml.Elem
、結果をより大きなXML構造に埋め込むこともできます。
編集
これについてもう少し考えた後、以下はこれを行うためのより良い(そしてより壊れにくい)方法かもしれません。フリーテキスト部分をCDATAのみに制限し、不均衡な式の可能性を最小限に抑えます。
<reason>{ scala.xml.Unparsed("<![CDATA[%s]]>".format(failedReason)) }</reason>