Relacionado con Adding an XML attribute depending on an Option, me gustaría agregar una etiqueta XML en Scala dependiendo de una opción.¿Cómo agrego una etiqueta XML o no, dependiendo de una opción en Scala?
scala> def toXml(value1: String, value2: Option[String]) =
| <body>
| <tag1>{value1}</tag1>
| {value2 map (x => <tag2>{x}</tag2>) flatten}
| </body>
toXml: (value1: String,value2: Option[String])scala.xml.Elem
Si existe la opción:
scala> toXml("value1", Some("value2"))
res1: scala.xml.Elem =
<body>
<tag1>value1</tag1>
<tag2>value2</tag2>
</body>
Si la opción no existe:
scala> toXml("value1", None)
res2: scala.xml.Elem =
<body>
<tag1>value1</tag1>
</body>
Quiero generar una gran cantidad de etiquetas en función de una opción, me preguntaba si una solución más concisa podría ser encontrada. Por ejemplo, proxenetismo la clase Elem con el? operador y utilizar de esta manera (? Es una solución sucia ya que el valor2 opción se convierte en una cadena antes de que el operador se llama):
scala> def toXml2(value1: String, value2: Option[String]) =
| <body>
| <tag1>{value1}</tag1>
| {<tag2>{value2}</tag2>?}
| </body>
¿Alguna idea?
Gracias Anne por la respuesta, esto es más claro que mi uso del mapa y aplanar. Sin embargo, me gustaría evitar copiar y pegar pruebas definidas para cada opción. Estoy buscando una solución donde el código se vea casi como el resultado XML. –