Scala Xml автоматический переходный процесс, когда значение равно нулю

Я знаю, чтобы генерировать XML с Pojo, я могу сделать что-то вроде этого,

    class Person(name : String, age : Int){
        def toXml() = <person><name>{ name }</name><age>{ age }</age></person>;
    }

Проблема в том, что если имя = ноль, я бы

    <person><name></name><age>8</age></person>

когда действительно, я хочу, чтобы узел был временным, когда значение равно нулю

    <person><age>8</age></person>

Есть ли чистый способ сделать это? Благодарю.

2 ответа

Решение

Следующий код работает для меня.

<person>{if(name != "")  <name>{name}</name>}</person>

ура

Если имя может быть нулевым, другой (более функциональный?) Подход заключается в использовании Option:

class Person(name : Option[String], age : Int){
  def toXml() = <person>{name map {x=> <name>{x}</name>} getOrElse(<name/>)} <age>{ age }</age></person>;
}

Я почти уверен, что его можно сделать менее многословным, но преимущество заключается в том, что вы указываете, что имя является необязательным, и тогда средство проверки типов заставит с этим справиться. С простой строкой вы должны помнить нулевую проверку самостоятельно.

Другие вопросы по тегам