Если вы не возражаете против изменения типа value
на xml.Elem
, вы можете сделать
def value = <xml:group>Hello <BR/> World</xml:group>
Добавление
На мой взгляд,Вы должны набрать как можно больше встроенных XML.Только тогда у вас будет проверка времени компиляции ввода.Все остальные решения в какой-то момент дают вам исключение времени выполнения (скажем, вы забыли /
) или даже могут нарушить макет XML.
Однако, если вы действительно хотите иметь простое преобразование, вы можетесделайте это:
class XmlString(str: String) {
def assumeXML = xml.XML.loadString("<xml:group>" + str + "</xml:group>")
def toUnparsedXML = new xml.Unparsed(str)
}
implicit def stringToXmlString(str: String) = new XmlString(str)
def value = "Hello <BR/> World"
и затем (по какой-то причине он по-прежнему показывает часть <xml:group>
; вы можете избавиться от нее с помощью xml.NodeSeq.fromSeq(value.assumeXML.child)
или аналогичной)
def message = <HTML><HEAD><TITLE>Test</TITLE></HEAD><BODY>{value.assumeXML}</BODY></HTML>
или даже (ну, вам здесь не нужно неявное, Unparsed(value)
подойдет)
def message = <HTML><HEAD><TITLE>Test</TITLE></HEAD><BODY>{value.toUnparsedXML}</BODY></HTML>
Метод assumeXML
завершится с ошибкой во время выполнения, если вы предоставите неверный XML;toUnparsedXML
примет все входные данные, даже данные, которые потенциально опасны.