Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在scala中使用XML节点连接字符串_Xml_Scala - Fatal编程技术网

在scala中使用XML节点连接字符串

在scala中使用XML节点连接字符串,xml,scala,Xml,Scala,我有一个字符串列表,我需要用标记将它们连接在一起。因此,从: val list = List("line1", "line2", "line3") 我需要得到一个NodeSeq: line1<br/>line2<br/>line3 line1line2line3 列表可能只包含一个元素,在这种情况下,我应该以一个NodeSeq结束,只包含一个文本(“line1”) 是否有一个单行程序可以使用列表中的一个高阶函数来执行此操作?我试着和foldLeft一起玩,但似乎无法

我有一个字符串列表,我需要用
标记将它们连接在一起。因此,从:

val list = List("line1", "line2", "line3")
我需要得到一个NodeSeq:

line1<br/>line2<br/>line3
line1
line2
line3
列表可能只包含一个元素,在这种情况下,我应该以一个NodeSeq结束,只包含一个文本(“line1”)

是否有一个单行程序可以使用列表中的一个高阶函数来执行此操作?我试着和foldLeft一起玩,但似乎无法让它做我想做的事

list.map(scala.xml.Text(_):scala.xml.NodeSeq).reduce(_ ++ <br /> ++ _)
不会编译。

如果您不介意使用,这里有
散布

import scalaz._
import Scalaz._

list.map(xml.Text(_): xml.Node).intersperse(<br/>): xml.NodeSeq
导入scalaz_
进口Scalaz_
list.map(xml.Text(41;):xml.Node.interspose(
):xml.NodeSeq
同意Debilski的回答。实现同样目标的另一种方法是

import scala.xml.\ucode>

XML.loadString(“+list.mkString(“
”)+”)。子级:NodeSeq


但是使用map/reduce是一种更干净的方法。

这几乎会打断无效的输入,例如
List(“我在问题中没有提到它,但这是未初始化的输入。您的方法有效,但是如果列表包含“asdf”之类的字符串“,它们被解析而不是显示,使Web应用程序容易受到攻击。也许我遗漏了什么,但我在“reduce”上得到一个编译错误,说在列表中找不到该方法。我需要使用reduceLeft或reduceRight,对吗?啊,这就是为什么。我在我的机器上的一个随机项目中启动了控制台,结果是2.8.1。
import scalaz._
import Scalaz._

list.map(xml.Text(_): xml.Node).intersperse(<br/>): xml.NodeSeq