14

展開する変数をscalaのcdataセクションに配置する方法はありますか?

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

2 に答える 2

27

それはさらに単純かもしれません:

val reason = <reason>{scala.xml.PCData(failedReason)}</reason>
于 2013-03-14T13:59:17.747 に答える
14

ネイティブ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> 
于 2012-12-20T16:37:56.483 に答える