2011-12-02 2 views
2

Je sais que pour générer xml avec POJO je peux faire quelque chose comme ça,Scala Xml automatique transitoire lorsque la valeur est nulle

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

Le problème est que si le nom = null, le j'aurais

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

quand vraiment, je veux que le noeud est transitoire lorsque la valeur est nulle

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

est-il un moyen propre pour y parvenir? Merci.

Répondre

1

Le code suivant fonctionne pour moi.

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

Vive

0

Si le nom peut être nul, une autre approche (? Plus fonctionnelle) consiste à utiliser l'option:

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

Je suis sûr qu'il peut être moins bavard, mais L'avantage est que vous spécifiez que ce nom est facultatif et que le vérificateur de type va forcer à gérer cela. Avec une chaîne simple, vous devez vous souvenir de la vérification nulle par vous-même.

Questions connexes