如何通过表达式设置XML文字标签名称?当它只是一个标签内的文本时,我使用花括号来包含一个要评估的表达式,如
<myTag>{My.expression}</mytag>
但我需要像
这样的东西<{My.tag}>{My.expression}</{My.tag}>
答案 0 :(得分:3)
有两种方式:
1.构建Elem
2.在copy
对象
Elem
方法
scala> val tag = "my.tag"
tag: java.lang.String = my.tag
scala> val name = "my expression"
name: java.lang.String = my expression
scala> import xml._
import xml._
scala> Elem(null, tag, Null, TopScope, Text(name))
res0: scala.xml.Elem = <my.tag>my expression</my.tag>
scala> <foo/>
res1: scala.xml.Elem = <foo></foo>
scala> <foo/>.copy(label = tag, child = Text(name))
res2: scala.xml.Elem = <my.tag>my expression</my.tag>
答案 1 :(得分:1)
我对scala.xml
并不熟悉,但看看我能提出的API:
import scala.xml._
def TAG(tag: String) = new {
def apply(ns: Node*) = new {
def ENDTAG = {
val d = <D></D>
new Elem(d.prefix,tag,d.attributes,d.scope,ns: _*)
}
}
}
val xml = <A>{TAG("B"){<C></C>}ENDTAG}</A>
println(xml) // <A><B><C></C></B></A>