2013-05-22 111 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")