2016-04-27 42 views
0

請注意這個問題與返回0或1個元素(Node或Elem)嚴格相關。請不要將NodeSeq.Empty當作解決方案,因爲已經可以用於返回NodeSeq類型(0個或更多元素)的函數,如this question上解決的那樣。如何使用Scala XML返回空節點?

我建立使用不同的功能塊的XML,如下面的例子:

<xml> 
    { maybeXmlNode(param) } 
</xml> 

而基於的價值試圖返回一個空或非空節點(或ELEM) PARAM如:

def maybeXmlNode(param: Boolean): NodeOrElem = { 
    if(param) <someXml></someXml> 
    else ??? //Empty or None doesn't work 
} 

我現在使用剛剛定義的函數類型選項[ELEM],然後用它作爲maybeXml.getOrElse(「」),但是,這並不讓那麼多的解決方案感覺到我。我現在的用法如下:

<xml> 
    { maybeXmlNode(param).getOrElse("") } 
</xml> 

def maybeXmlNode(param: Boolean): Option[Elem] = { 
    if(param) Some(<someXml></someXml>) 
    else None 
} 

沒有一個更好的方式來表達這種存在,可能通過使用空節點或直接ELEM?

+0

的可能的複製[如何返回使用Scala的XML空節點或NodeSeq?](http://stackoverflow.com/questions/36879390/how-to-return-empty-node- or-nodeseq-using-scala-xml) – Dima

+0

昨天你不是已經問過同樣的問題嗎? http://stackoverflow.com/questions/36879390/how-to-return-empty-node-or-nodeseq-using-scala-xml?lq=1 – Dima

+0

不,那一個是零到很多元素,這是嚴格一個或零個 – chaotive

回答

0

嘗試

<xml>{maybeXmlNode(param).getOrElse(new NodeBuffer())}</xml> 
+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/14387336) – Wildcat

+0

這是一個很好的觀點。因爲節點是抽象的,並且一個元素需要有一個標籤,所以我不認爲這是一個空元素或節點。所以一個選項代表零或一個概念,不包括多個。 – user1763729