XML XStream问题

时间:2011-04-16 19:44:43

标签: java xml xstream

<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中的输出。 我如何实现这一目标?

2 个答案:

答案 0 :(得分:2)

这有助于我解决同样的问题:

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

Date.classjava.util.Date

答案 1 :(得分:0)

实现你想要的是直截了当的。 您创建一个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>