C'è un modo per mettere una variabile di essere ampliato in una sezione CDATA in scalavariabile in CDATA a Scala
val reason = <reason><![CDATA[ {failedReason} ]]></reason>
C'è un modo per mettere una variabile di essere ampliato in una sezione CDATA in scalavariabile in CDATA a Scala
val reason = <reason><![CDATA[ {failedReason} ]]></reason>
Non sono sicuro se è possibile ottenere che attraverso il supporto XML nativo, ma si poteva fare qualcosa di simile:
scala.xml.XML.loadString("<reason><![CDATA[%s]]></reason>".format(failedReason))
si perdono alcune delle convalide di compilazione in questo modo, ma dovrebbe darvi am elemento XML con i dati che si sta cercando. Poiché restituisce un valore scala.xml.Elem
, è anche possibile incorporare il risultato in una struttura XML più grande.
EDIT
Dopo aver riflettuto su questo un po 'di più, possono essere un modo beter (e meno fragile) per fare questo. Limita la porzione di testo libero solo al CDATA, riducendo al minimo il potenziale di espressioni sbilanciate.
<reason>{ scala.xml.Unparsed("<![CDATA[%s]]>".format(failedReason)) }</reason>
Potrebbe essere ancora più semplice:
val reason = <reason>{scala.xml.PCData(failedReason)}</reason>
Si potrebbe voler eseguire l'escape illegale ']]>': 'content.replaceAll ("]]> ","]]]> ")' –
Il secondo blocco non analizzata funziona alla grande! – maxfridbe