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>;
}
Я почти уверен, что его можно сделать менее многословным, но преимущество заключается в том, что вы указываете, что имя является необязательным, и тогда средство проверки типов заставит с этим справиться. С простой строкой вы должны помнить нулевую проверку самостоятельно.