是否可以使用 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;

如您所见,OrganizationInvestor 都包含对 Individual[=55= 类型对象的引用].

问题是,我需要 firstNamelastName 在 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 标签?我知道有一种方法可以为集合做到这一点,但是引用对象字段呢?
有没有一种方法可以同时显示 firstNamelastName for Individual 包含在 Organization 中,但不显示在投资者

原来我想的那样做是不可能的

但是,我的问题的解决方案是 custom Converter,它实现了 XStream 包中的 Converter 接口。在这样的转换器中,可以指定一种方法来 serialize/deserialize 特定的 class 对象。

这样做之后,解决方案就像在当前 XStream 实例中注册指定的转换器一样简单,如下所示:

XStream xstream = new XStream();
xstream.registerConverter(new YourCustomConverter());