2012-07-18 40 views
0

我有一個像下面這樣的類,我使用xSteam將Edge轉換爲xml。自我關閉標籤問題xstream當null

@XStreamAlias("edge") 
class Edge{ 

    @XStreamAsAttribute 
    @XStreamAlias("source") 
    private String source; 

    @XStreamAsAttribute 
    @XStreamAlias("target") 
    private String target; 

    @XStreamAlias("data") 
    private Data data; 
    ..... 
} 

當我設置數據= NULL,我可以得到

<edge source="8" target="10" /> 

但我想,當數據得到下面= NULL

<edge source="8" target="10" ></edge> 

有些人能幫助嗎?

+1

爲什麼這很重要?這兩種形式是相同的(事實上,大多數XML解析技術你無法知道你正在解析的XML中使用了哪種形式,它們都顯示爲具有兩個屬性且沒有文本內容或子項的元素)。 – 2012-07-18 15:14:59

回答

0

在XML級別上你無能爲力,因爲在這個級別上,兩種形式都是完全相同的。如果您確實需要一種形式而不是其他形式,則必須提供自己的XML串行器,或使用默認串行器並後處理其輸出流。如果不知道當前如何序列化數據,我無法給您更多詳細信息。

2

您可以使用Dom4JDriver驅動程序。在這種情況下,你可以格式化你的XML輸出 這樣的代碼:

OutputFormat outPutFormat = new OutputFormat(); 
outPutFormat.setLineSeparator(""); 
outPutFormat.setExpandEmptyElements(true); 
outPutFormat.setEncoding("UTF-8"); 

Dom4JDriver d4j = new Dom4JDriver(new XmlFriendlyNameCoder("_", "_")); 
d4j.setOutputFormat(outPutFormat); 
XStream xstream = new XStream(d4j); 
xstream.autodetectAnnotations(true);