<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中的输出。
我如何实现这一目标?
答案 0 :(得分:2)
这有助于我解决同样的问题:
xstream.addDefaultImplementation(java.sql.Date.class, Date.class);
xstream.addDefaultImplementation(java.sql.Timestamp.class, Date.class);
Date.class
为java.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>