有没有办法将要扩展的变量放在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 元素。由于它返回 a scala.xml.Elem
,因此您还可以将结果嵌入到更大的 XML 结构中。
编辑
在考虑了更多之后,以下可能是一种更好(并且不那么脆弱)的方式来做到这一点。它将自由文本部分限制为仅 CDATA,从而最大限度地减少表达不平衡的可能性。
<reason>{ scala.xml.Unparsed("<![CDATA[%s]]>".format(failedReason)) }</reason>