有没有办法使用文字语法生成XML:
<a>
{
for (i <- Range(1, 3)) yield {
<b>{i}</b>
}
}
</a>
将返回
<a><b>1</b><b>2</b></a>
即。我想只使用一个复合语句,它将以某种方式返回完整的XML文字。
我知道的唯一方法是分两步完成:在第一步中,for-yield语句将返回IndexedSeq或类似的东西,然后在第二步中我必须将其转换为scala.xml.Elem。没关系,但我觉得你可以更简洁 - 几乎和我在上面的代码中提出的一样简洁。
感谢。
答案 0 :(得分:1)
你是否特别想使用for comprehension?如果没有,这应该为您提供您正在寻找的输出:
<a>{
(Range(1, 3)).map{ vl =>
<b>{vl}</b>
}
}</a>
答案 1 :(得分:1)
你发布的内容很好......
如果您希望在输入方面更简洁,可以使用
的内部声明(1 to 3).map{i => <b>{i}</b>}
//or
for(i<-1 to 3) yield <b>{i}</b>
那么你就是这样:
val xml = <a>{ (1 to 3).map{ i => <b>{i}</b> } }</a>
哪个给出了
xml: scala.xml.Elem = <a><b>1</b><b>2</b><b>3</b></a>
答案 2 :(得分:0)
如果需要for语法,则需要从Seq [Node]到NodeSeq的隐式转换。我会写下代码,但我现在正在打电话......