如何在Scala中评估XML文字标记名称?

时间:2011-11-14 07:07:59

标签: xml scala

如何通过表达式设置XML文字标签名称?当它只是一个标签内的文本时,我使用花括号来包含一个要评估的表达式,如

<myTag>{My.expression}</mytag>

但我需要像

这样的东西
<{My.tag}>{My.expression}</{My.tag}>

2 个答案:

答案 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>