我需要一种方法来有条件地将XML属性“POSITION”添加到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>
}
答案 0 :(得分:2)
使用“null”不是一个好习惯,但在这种情况下它会对你有帮助:
scala> <root ta={ if (true) "true" else null } fa={ if (false) "false" else null } />
res0: scala.xml.Elem = <root ta="true" ></root>
答案 1 :(得分:0)
一种稍微更清洁的方法来做同样的事情@senia建议:
val posOpt = if (lvl2) Some(myPosition) else None
val xml = <mydata position={posOpt orNull}/>
答案 2 :(得分:0)
一种方法是在之前创建代码段:
val pos =
if (lvl == 2) {
"position = ..."
} else {
""
}
并始终将其插入结果中。
这可以通过使用带有嵌入式 map 的选项和字符串插值进行扩展。
val pos =
if (lvl == 2) {
Some(position)
} else {
None
}
与
pos.map(v => s"position = $v")