2012-05-24 2 views
0

Для получения дополнительных пояснений в структуре 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) 

Заранее благодарим за элегантное решение!

Понго

ответ

0

Почему бы вам не использовать регулярное выражение?

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

//or just "\n +" in replaceAll 

Если вам не нравится регулярное выражение и не забочусь о пространствах в тексте тега вы можете сделать что-то вроде этого:

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

Ницца, но если в структуре xml такой тег: Вернуться к заказчику результат: 0201E013returntocust omer – Twistleton

+0

@Twistleton oh, тогда я должен быть более конкретным в regexp. Я обновил ответ –

0

Изменить ваше утверждение к этому:

assert(row.text.split('\n').map(_.trim).mkString == "0201E013return to customer") 
Смежные вопросы