7
votes

Comment puis-je ajouter une balise XML ou non, selon une option à Scala?

Ajout un attribut XML en fonction d'une option , je voudrais ajouter une balise XML dans Scala selon une option

scala> def toXml2(value1: String, value2: Option[String]) =
     | <body>
     |   <tag1>{value1}</tag1>
     |   {<tag2>{value2}</tag2>?}
     | </body>


0 commentaires

4 Réponses :


8
votes

Pourquoi ne pas utiliser une instruction if comme ceci:

def toXml(value1:String,value2:Option[String]) =
  <body>
    <tag1>{value1}</tag1>
    {if (value2 isDefined) <tag2>{value2.get}</tag2>}
  </body>


1 commentaires

Merci Anne pour la réponse, cela est plus clair que mon utilisation de la carte et aplatissent. Cependant, je voudrais éviter de copier et coller des tests isDefined pour chaque option. Je suis à la recherche d'une solution où le code ressemble presque à la sortie XML.



12
votes

Votre choix code> peut être réalisé comme ceci:

<body>
  <tag1>Hello</tag1>

  <tag3><innerTag></innerTag></tag3>
  <tag4><innerTag></innerTag></tag4>

</body>


1 commentaires

est-il un moyen d'éviter les lignes vides?



4
votes

Vous pouvez également plier l'option: xxx


1 commentaires

Ceci est plus simple que les autres réponses.



4
votes

Voici une version simple qui n'utilise pas (sans doute trompeur, car rien n'est accumulé) Méthode de pliage: xxx

Le résultat est identique à la réponse de Zoltan cependant.


0 commentaires