Scala XML文本生成,以获得收益

Scala XML文本生成,以获得收益,xml,scala,Xml,Scala,是否有任何方法可以使用文本语法生成XML,例如: <a> { for (i <- Range(1, 3)) yield { <b>{i}</b> } } </a> { 对于(i您是否特别想使用用于理解的?如果不想,则应提供您想要的输出: <a>{ (Range(1, 3)).map{ vl => <b>{vl}</b> } }</a> { (范围(

是否有任何方法可以使用文本语法生成XML,例如:

<a>
{
  for (i <- Range(1, 3)) yield {
    <b>{i}</b>
  }
}
</a>

{

对于(i您是否特别想使用用于理解的?如果不想,则应提供您想要的输出:

<a>{
  (Range(1, 3)).map{ vl => 
     <b>{vl}</b>
  }
}</a>
{
(范围(1,3)).map{vl=>
{vl}
}
}

你发布的内容很好

如果您希望它在键入方面更加简洁,可以使用

(1 to 3).map{i => <b>{i}</b>}
//or
for(i<-1 to 3) yield <b>{i}</b>
(1到3).map{i=>{i}
//或
对于(i{i}}}

xml: scala.xml.Elem = <a><b>1</b><b>2</b><b>3</b></a>
xml:scala.xml.Elem=123

如果您想使用for语法,需要从Seq[Node]进行隐式转换给NodeSeq。我会写下代码,但我现在在手机上…

my bad,理解返回一个元素向量,我假设它不会被接受。我不明白scala编译器如何自动将其转换为可以被接受的文本语法定义。据我所知,任何可以被我接受的东西都可以简单地转换成一个
NodeSeq
可以进入
{…}
(这只是我的假设;如果我错了,有人会纠正我)我还没有完全理解map或flatMap的本质,但我会研究它,这一个也非常优雅。
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>