2017-09-16 85 views
0

我想弄清楚如何解析XML時,標籤是缺少的,我可以設置爲空字符串,而不是NULL的默認值。目前XStream使用null,這不是我想要的。如何使用XStream將具有默認值的XML解組爲空字符串?

該課程有超過40個屬性,都是String。有一個構造函數,每個都有默認值。我的意思是,像這樣:

case class MyData(id: String = "", b: String = "", ....) 

(是的,我想使用Scala使用它)

技術上我可以寫它們設置爲空字符串自定義轉換器,但是感覺有點傻。

我試圖用這個

new XStream(new PureJavaReflectionProvider()) 

從這裏提出:https://stackoverflow.com/a/29747705/598562

它似乎沒有工作,雖然。

任何其他的想法?

+0

看到這個答案:https://stackoverflow.com/a/12042095/4899193 –

+0

但是這JAXB,不西河 – sowen

回答

0

XStreams使用默認的空構造函數,然後通過之後調用setter來進行跟蹤。所以,爲了在沒有自定義轉換器的情況下工作,你需要創建一個顯式的空構造函數,用你期望的默認值填充所有內容。下面是一個簡單,工作程序:

import com.thoughtworks.xstream.XStream 
import com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider 

object Hello extends App { 
    val xstream = new XStream(new PureJavaReflectionProvider()) 
    xstream.alias("MyData", classOf[MyData]) 
    val output = xstream.fromXML("<MyData><id>This should fill in</id></MyData>") 
    println(output) 
} 

case class MyData(id: String = "", var b: String = "") 
{ 
    def this() = this("", "") 
} 
相關問題