在XML中将XML文本作为参数编写

Jér*_*ôme 6 xml scala

我可以将变量作为多值参数传递:

scala> <b/>
res26: scala.xml.Elem = <b></b>

scala> Elem(null,"a",Null,TopScope,res26)
res27: scala.xml.Elem = <a><b></b></a>
Run Code Online (Sandbox Code Playgroud)

但我无法将XML文本作为多值参数传递:

scala> Elem(null,"a",Null,TopScope,<b/>)
<console>:12: error: not found: value <
Elem(null,"a",Null,TopScope,<b/>)
Run Code Online (Sandbox Code Playgroud)

但我可以将XML文本作为简单参数传递

scala> def bar(s:String,n:Elem) = s+n.toString
bar: (s: String, n: scala.xml.Elem)java.lang.String
scala> bar("super ", <a/>)
res30: java.lang.String = super <a></a>
Run Code Online (Sandbox Code Playgroud)

谢谢

Phi*_*ppe 8

在XML元素之前添加空格使其工作:

scala> Elem(null, "a", Null, TopScope, <b/>)
resN: scala.xml.Elem = <a><b></b></a>
Run Code Online (Sandbox Code Playgroud)

Scala语言规范,第1.5节:

为了允许文字包含XML片段,在下列情况下遇到开放角括号"<"时,词法分析从Scala模式切换到XML模式:'<'必须在空格,左括号或开头之前大括号后面紧跟一个开始XML名称的字符