为了在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)
提前感谢优雅的解决方案!
猩猩
答案 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")