【问题标题】:XML XStream issuesXML XStream 问题
【发布时间】:2011-08-07 01:01:14
【问题描述】:
<PersonalVehicleCoverage>
        <EffectiveDate class="sql-date">2011-03-01</EffectiveDate>
        <ExpirationDate class="sql-date">2011-05-31</ExpirationDate>
</PersonalVehicleCoverage>

EffectiveDate 是 java.sql.date;

我正在使用 XStream 使用以下语法从 java 对象生成 XML:

xstream.toXML(data);

我不希望 class="sql-date" 在生成的 XML 中作为输出。 我如何做到这一点?

【问题讨论】:

  • 这在 XSTREAM 中无法实现吗?
  • 如果您有兴趣尝试 JAXB impl,请告诉我,我很乐意提供帮助:bdoughan.blogspot.com/2010/10/…
  • 你能告诉我们你的数据对象吗?只有当对象的实际类型与字段声明的类型不匹配时,才会输出class属性。

标签: java xml xstream


【解决方案1】:

这帮助我解决了同样的问题:

xstream.addDefaultImplementation(java.sql.Date.class, Date.class);
xstream.addDefaultImplementation(java.sql.Timestamp.class, Date.class);

Date.classjava.util.Date

【讨论】:

    【解决方案2】:

    实现你想要的很简单。 您创建一个 XStream 实例并对其进行配置(在下面的示例中,我必须为 PersonalVehicleCoverage 设置别名,因为静态内部类使用包含类的前缀进行序列化。 由于该示例不使用包,因此根据您的需要对其进行序列化。如果你的类在一个包中,你可以使用这样的东西来适应 XML:xStream.aliasPackage("pre", "my.package");

    这里是示例代码:

    import java.sql.Date;
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    
    import com.thoughtworks.xstream.XStream;
    
    public class XStreamDemo {
    
      public static void main(String[] args) throws ParseException {
        XStream xStream = new XStream();
        xStream.alias("PersonalVehicleCoverage", PersonalVehicleCoverage.class);
        PersonalVehicleCoverage object = new PersonalVehicleCoverage();
        DateFormat dateFormat = new SimpleDateFormat("yyyy MMM DD");
        object.EffectiveDate = new Date(dateFormat.parse("2011 Jan 1").getTime());
        object.ExpirationDate = new Date(dateFormat.parse("2011 Jan 31").getTime());
        System.out.println(xStream.toXML(object));
      }
    
      static class PersonalVehicleCoverage {
        Date EffectiveDate;
        Date ExpirationDate;
      }
    }
    

    这是该示例的输出:

    <PersonalVehicleCoverage>
      <EffectiveDate>2011-01-01</EffectiveDate>
      <ExpirationDate>2011-01-31</ExpirationDate>
    </PersonalVehicleCoverage>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多