java - 是否可以使用 XStream 将对象字段隐式添加到 XML 中?

标签 java xml serialization xstream

我必须将组织类型的一组已排序对象转换为 XML 文件。 所述类型除了原始类型和 String 对象之外还包含其他引用类型对象。

以下是组织字段:

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

接下来是投资者:

Individual name;
double sharesPercentage;

最后是个人:

String firstName;
String lastName;

如您所见,组织投资者都包含对个人类型对象的引用。

问题是,我需要在 Organization 对象的 XML 中显示 firstNamelastName,并且只需要 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,但不显示投资者中的firstNamelastName

最佳答案

事实证明,按照我最初想象的方式去做是不可能的。

但是,我的问题的解决方案以 custom Converter 的形式出现。 ,它实现了 XStream 包中的 Converter 接口(interface)。在这样的转换器中,我们可以指定一种方法来序列化/反序列化特定类的对象。

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

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

关于java - 是否可以使用 XStream 将对象字段隐式添加到 XML 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39640930/

相关文章:

C# xml序列化去除锯齿状数组元素名称

java - 如何使用 Jsoup 遍历 XML 标签?

c# - XmlDocument读取XML文档注释问题

java - Redis/Redisson LocalCachedMap - TTL/驱逐如何工作?

c# - 如何使用 c# xml 工具而不是正则表达式解除绑定(bind)混合 xml 内容?

mysql - 从 XML 数据创建 SQL 表

java - Jackson JSON - 反序列化 Commons MultiMap

java - 无法连接到spark master :InvalidClassException: org. apache.spark.rpc.RpcEndpointRef;本地类不兼容

java - 如何在Java中为字符串变量编写 "if"语句?

java - 避免将对象中的某些属性包含在 WSDL 中