2011-04-16 73 views
2
<PersonalVehicleCoverage> 
     <EffectiveDate class="sql-date">2011-03-01</EffectiveDate> 
     <ExpirationDate class="sql-date">2011-05-31</ExpirationDate> 
</PersonalVehicleCoverage> 

EffectiveDate是java.sql.date;XML XStream问题

我使用的XStream成从使用以下语法Java对象XML:

xstream.toXML(data); 

我不想class="sql-date"在生成的XML输出。 我该如何做到这一点?

+0

这在XSTREAM中无法实现吗? – 2011-04-18 12:05:01

+0

如果您有兴趣尝试使用JAXB impl,请告诉我,我很乐意提供帮助:http://bdoughan.blogspot.com/2010/10/how-does-jaxb-compare-to-xstream.html – 2011-04-19 15:05:56

+0

你能告诉我们你的数据对象吗?仅当对象的实际类型与字段声明的类型不匹配时才输出类属性。 – dogbane 2011-05-25 09:38:51

回答

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> 
2

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

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

哪里Date.classjava.util.Date