我必须将组织类型的有序对象转换为XML文件。 所述类型包含原始类型和String对象,以及其他引用类型对象。
以下是组织:
的字段String orgName;
double capital;
Individual generalDirector;
Investor investor;
接下来是投资者:
Individual name;
double sharesPercentage;
最后个人:
String firstName;
String lastName;
如您所见,组织和投资者都包含对个人类型对象的引用。
问题是,对于组织对象,我需要在XML中显示 firstName 和 lastName ,并且只需要 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 和Investor的名称标记?我知道有一种方法可以用于集合,但是参考对象字段呢? 是否有办法显示组织中包含个人的 firstName 和 lastName ,但投资者?
答案 0 :(得分:1)
事实证明,按照我原先想象的方式完成它是不可能的。
然而,我的问题的解决方案以custom Converter的形式出现,它从XStream包实现Converter接口。在这样的转换器中,可以指定一种序列化/反序列化特定类对象的方法。
一旦这样做,解决方案就像在当前XStream实例中注册指定的转换器一样简单,如下所示:
XStream xstream = new XStream();
xstream.registerConverter(new YourCustomConverter());