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 元素。由于它返回 a scala.xml.Elem,因此您还可以将结果嵌入到更大的 XML 结构中。

编辑

在考虑了更多之后,以下可能是一种更好(并且不那么脆弱)的方式来做到这一点。它将自由文本部分限制为仅 CDATA,从而最大限度地减少表达不平衡的可能性。

<reason>{ scala.xml.Unparsed("<![CDATA[%s]]>".format(failedReason)) }</reason> 
于 2012-12-20T16:37:56.483 回答