2013-05-22 77 views
0

我需要一种将XML属性“POSITON”有条件添加到XML元素“节点”的方法。目前我正在进行条件检查,然后创建节点。有条件地添加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> 
    } 

回答

2

使用“空”是不是一个好的做法,但在这种情况下,它会帮助你:

scala> <root ta={ if (true) "true" else null } fa={ if (false) "false" else null } /> 
res0: scala.xml.Elem = <root ta="true" ></root> 
+0

谢谢,它的工作。我之前尝试过使用“”,但应该使用null。 – gosanjeev

0

稍微清洁的方式做同样的事情@senia建议是:

val posOpt = if (lvl2) Some(myPosition) else None 
    val xml = <mydata position={posOpt orNull}/> 
0

一种方法是创建段之前:

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

并始终将其插入结果中。

这可以通过使用一个选项具有嵌入地图结合串内插由延长。

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

pos.map(v => s"position = $v")