Как оценить имя XML-литерального тега в Scala? - PullRequest
2 голосов
/ 14 ноября 2011

Как установить имя литерального XML-тега по выражению?Когда речь идет о тексте внутри тега, я использую фигурные скобки, чтобы заключить выражение для оценки, например

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

, но мне нужно что-то вроде

<{My.tag}>{My.expression}</{My.tag}>

Ответы [ 2 ]

3 голосов
/ 14 ноября 2011

Есть два способа:
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 голос
/ 14 ноября 2011

Я не очень знаком с 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...