1

我需要一种有条件地将 XML 属性“POSITON”添加到 XML 元素“节点”的方法。目前我正在先进行条件检查,然后再创建节点。

if (lvl == 2)
      node = <node COLOR={ color } CREATED={ epochTimeMillis } ID={ idGen } POSITION={ position } LINK={ link } MODIFIED={ epochTimeMillis } STYLE="bubble" TEXT={ f.getName() }>
               <edge COLOR={ color } STYLE={ style } WIDTH={ width }/>
             </node>
else
      node = <node COLOR={ color } CREATED={ epochTimeMillis } ID={ idGen } LINK={ link } MODIFIED={ epochTimeMillis } STYLE="bubble" TEXT={ f.getName() }>
               <edge COLOR={ color } STYLE={ style } WIDTH={ width }/>
             </node>
  }
4

3 回答 3

3

使用“null”不是一个好习惯,但在这种情况下,它会帮助您:

scala> <root ta={ if (true) "true" else null } fa={ if (false) "false" else null } />
res0: scala.xml.Elem = <root ta="true" ></root>
于 2013-05-22T03:50:44.293 回答
1

@senia 建议的做同样事情的一个稍微干净的方法是:

    val posOpt = if (lvl2) Some(myPosition) else None
    val xml = <mydata position={posOpt orNull}/>
于 2013-05-22T09:49:21.190 回答
0

一种方法是在之前创建代码段:

val pos =
  if (lvl == 2) {
    "position = ..."
  } else {
    ""
  }

并始终将其插入结果中。

这可以通过使用带有嵌入地图的选项结合字符串插值来扩展。

val pos =
  if (lvl == 2) {
    Some(position)
  } else {
    None
  }

pos.map(v => s"position = $v")
于 2013-05-22T09:49:28.953 回答