与Adding an XML attribute depending on an Option相关,我想根据一个选项在Scala中添加一个XML标签。如何添加XML标签,取决于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
如果选项存在:
scala> toXml("value1", Some("value2"))
res1: scala.xml.Elem =
<body>
<tag1>value1</tag1>
<tag2>value2</tag2>
</body>
如果该选项不存在:
scala> toXml("value1", None)
res2: scala.xml.Elem =
<body>
<tag1>value1</tag1>
</body>
我要产生大量的根据选项标签,我想知道是否可以找到更简洁的解决方案。举例来说,用Elemental类来拉扯Elem类?运营商和使用它像这样(?这是因为选项的值2肮脏的溶液转化为前一个字符串操作叫做):
scala> def toXml2(value1: String, value2: Option[String]) =
| <body>
| <tag1>{value1}</tag1>
| {<tag2>{value2}</tag2>?}
| </body>
有什么想法?
感谢安妮的回答,这更清楚地表明我对地图的使用和拼合。不过,我想避免复制和粘贴每个选项的定义测试。我正在寻找一个代码看起来几乎像XML输出的解决方案。 – 2011-03-09 18:56:42