2016-09-22 155 views
1

我必須將組織類型的對象的有序集合轉換爲XML文件。 該類型包含基本類型和字符串對象以及其他引用類型對象。是否可以使用XStream將對象字段隱式添加到XML中?

這裏是領域組織

String orgName; 
double capital; 
Individual generalDirector; 
Investor investor; 

接下來是投資者

Individual name; 
double sharesPercentage; 

最後個人

String firstName; 
String lastName; 

如您所見,組織投資者包含對類型對象的引用個人

問題是,我需要爲組織對象顯示在XML兩種的firstNamelastName的,只有lastName的投資者對象,所以省略的firstName完全是行不通的。

我也想省略<「generalDirector」>和<「投資」>標記從輸出,但保留其內容在不同的標籤,如:

<organization> 
     <orgName>Dummy Solutions</orgName> 
     <capital>50000</capital> 
     <dirFirstName>Jacob</dirFirstName> 
     <dirLastName>Smith</dirLastName> 
     <investor> 
      <lastName>Johnson</lastName> 
      <sharePercentage>5.13</sharePercentage> 
     </investor> 
    </organization> 

但是XStream的轉換它在下列方式:

<organization> 
     <orgName>Dummy Solutions</orgName> 
     <generalDirector> 
      <firstName>Jacob</firstName> 
      <lastName>Smith</lastName> 
     </generalDirector> 
     <capital>50000</capital> 
     <investor> 
      <name> 
       <firstName>NotSpecified</firstName> 
       <lastName>Johnson</lastName> 
      </name> 
      <sharesPercentage>5.13</sharesPercentage> 
     </investor> 
    </organization> 

我怎樣才能擺脫generalDirector和投資者標籤而不刪除他們的內容?我知道有一種方法可以用於集合,但引用對象字段又如何呢?
,並有顯示的firstNamelastName的既爲包含在組織個人的一種方式,但不是在投資者

回答

1

原來,不可能像我最初想象的那樣完成它。

但是,我的問題的解決方案以custom Converter的形式出現,它實現了XStream包中的Converter接口。在這樣的轉換器中,可以指定序列化/反序列化特定類別對象的方式。

在這樣做的解決方案是爲登記指定的轉換器在當前XStream的實例,像這樣容易:

XStream xstream = new XStream(); 
xstream.registerConverter(new YourCustomConverter()); 
相關問題