0

为了更清楚地说明 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)

在此先感谢您提供优雅的解决方案!

庞戈

4

3 回答 3

4
row.child.map(_.text.trim).mkString
于 2012-05-24T14:15:38.137 回答
0

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

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

//or just "\n +" in replaceAll

如果您不喜欢正则表达式并且不关心标签文本中的空格,您可以执行以下操作:

assert(row.text.filterNot(Set(' ','\n')) == "0201E013") 
于 2012-05-24T13:55:10.177 回答
0

将您的断言更改为:

assert(row.text.split('\n').map(_.trim).mkString == "0201E013return to customer")
于 2012-05-24T14:17:30.960 回答