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

时间:2011-09-26 09:43:57

标签: 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>

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

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

但我可以将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>

由于

1 个答案:

答案 0 :(得分:8)

在XML元素开始工作之前添加空格:

scala> Elem(null, "a", Null, TopScope, <b/>)
resN: scala.xml.Elem = <a><b></b></a>

来自Scala Language Specification,第1.5节:

  

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