是否可以使用 XStream 将对象字段隐式添加到 XML?
Is it possible to implicitly add object fields to XML using XStream?
我必须将 Organization 类型的一组排序对象转换为 XML 文件。
所述类型包含原始类型和 String 对象以及其他引用类型对象。
以下是组织的字段:
String orgName;
double capital;
Individual generalDirector;
Investor investor;
接下来是投资者:
Individual name;
double sharesPercentage;
最后个人:
String firstName;
String lastName;
如您所见,Organization 和 Investor 都包含对 Individual[=55= 类型对象的引用].
问题是,我需要 firstName 和 lastName 在 XML 中显示 Organization 对象,只有 lastName 用于 Investor 对象,因此完全省略 firstName 不会'没用。
我还想从输出中省略 <'generalDirector'> 和 <'investor'> 标签,但将它们的内容保留在单独的标签中,如:
<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 的 name 标签?我知道有一种方法可以为集合做到这一点,但是引用对象字段呢?
有没有一种方法可以同时显示 firstName 和 lastName for Individual 包含在 Organization 中,但不显示在投资者?
原来我想的那样做是不可能的
但是,我的问题的解决方案是 custom Converter,它实现了 XStream 包中的 Converter 接口。在这样的转换器中,可以指定一种方法来 serialize/deserialize 特定的 class 对象。
这样做之后,解决方案就像在当前 XStream 实例中注册指定的转换器一样简单,如下所示:
XStream xstream = new XStream();
xstream.registerConverter(new YourCustomConverter());
我必须将 Organization 类型的一组排序对象转换为 XML 文件。 所述类型包含原始类型和 String 对象以及其他引用类型对象。
以下是组织的字段:
String orgName;
double capital;
Individual generalDirector;
Investor investor;
接下来是投资者:
Individual name;
double sharesPercentage;
最后个人:
String firstName;
String lastName;
如您所见,Organization 和 Investor 都包含对 Individual[=55= 类型对象的引用].
问题是,我需要 firstName 和 lastName 在 XML 中显示 Organization 对象,只有 lastName 用于 Investor 对象,因此完全省略 firstName 不会'没用。
我还想从输出中省略 <'generalDirector'> 和 <'investor'> 标签,但将它们的内容保留在单独的标签中,如:
<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 的 name 标签?我知道有一种方法可以为集合做到这一点,但是引用对象字段呢?
有没有一种方法可以同时显示 firstName 和 lastName for Individual 包含在 Organization 中,但不显示在投资者?
原来我想的那样做是不可能的
但是,我的问题的解决方案是 custom Converter,它实现了 XStream 包中的 Converter 接口。在这样的转换器中,可以指定一种方法来 serialize/deserialize 特定的 class 对象。
这样做之后,解决方案就像在当前 XStream 实例中注册指定的转换器一样简单,如下所示:
XStream xstream = new XStream();
xstream.registerConverter(new YourCustomConverter());