Scala - 将XML文本转换为不带换行符的字符串

时间:2012-05-24 13:37:26

标签: xml scala

为了在XML结构中进行更多说明,我将在一行中编写每个标记。

不幸的是,结果包含(在转换为文本之后)多行,因此断言失败。我需要将整个结果作为一行而没有换行符

val row = <row>
            <fromSubsystem>02</fromSubsystem>
            <toSubsystem>01</toSubsystem>
            <action>E013</action>
            <comment>return to customer</comment>
          </row>

println("==> " + row.text)  

assert(row.text == "0201E013return to customer")   

==> 
             02
             01
             E013
             return to customer
Exception in thread "main" java.lang.AssertionError: assertion failed
    at scala.Predef$.assert(Predef.scala:146)

提前感谢优雅的解决方案!

猩猩

3 个答案:

答案 0 :(得分:4)

row.child.map(_.text.trim).mkString

答案 1 :(得分:0)

为什么不使用正则表达式?

assert(row.text.replaceAll("\n[ ]+","") == "0201E013") 

//or just "\n +" in replaceAll

如果你不喜欢正则表达式并且不关心标签文本中的空格,你可以这样做:

assert(row.text.filterNot(Set(' ','\n')) == "0201E013") 

答案 2 :(得分:0)

将您的断言改为:

assert(row.text.split('\n').map(_.trim).mkString == "0201E013return to customer")