Verknüpfen Sie Zeichenfolgen mit XML-Knoten zwischen in scala

8

Ich habe eine Liste von Strings und muss sie zusammen mit & lt; br / & gt; Tags dazwischen. Also ab:

%Vor%

Ich muss mit einem NodeSeq von:

enden %Vor%

Es ist möglich, dass die Liste nur ein Element enthält. In diesem Fall sollte ich mit einem NodeSeq nur von Text ("line1") enden.

Gibt es einen Einzeiler, um dies zu tun, indem Sie eine der Funktionen höherer Ordnung in der Liste verwenden? Ich habe versucht, mit FoldLeft herumzuspielen, aber ich kann es nicht so machen, wie ich es will.

    
user1106210 19.12.2011, 15:45
quelle

3 Antworten

12
%Vor%

Beachten Sie, dass wir den Typ manuell auf scala.xml.NodeSeq erweitern müssen, da Text für die Methode reduce zu restriktiv ist. Das prägnantere

%Vor%

wird nicht kompiliert.

    
Debilski 19.12.2011, 16:26
quelle
3

Wenn es Ihnen nichts ausmacht, Scalaz zu verwenden, gibt es intersperse :

%Vor%     
Travis Brown 19.12.2011 16:28
quelle
0

Stimmen Sie dem zu, was Debilski beantwortet hat. Eine andere Möglichkeit, dasselbe zu erreichen, ist

import scala.xml._

XML.loadString("<root>" + list.mkString("<br/>") + "</root>").child:NodeSeq

Aber die Verwendung von map / reduce ist ein viel sauberer Ansatz.

    
Udayakumar Rayala 19.12.2011 16:46
quelle

Tags und Links