我想通过JAXB将具有java.time.Localdate(JSR-310)的对象转换为XML,但输出错误

我想通过JAXB将具有java.time.Localdate(JSR-310)的对象转换为XML,但输出错误,java,xml,jaxb,java-8,java-time,Java,Xml,Jaxb,Java 8,Java Time,我想通过JAXB将具有java.time.Localdate(JSR-310)和将Localdate包装为XML的属性的对象转换为XML,但输出是错误的 public <T> void printPdf(T obj) { // create xml JAXBContext context = JAXBContext.newInstance(obj.getClass()); Marshaller m = context.createMarshaller();

我想通过JAXB将具有java.time.Localdate(JSR-310)和将Localdate包装为XML的属性的对象转换为XML,但输出是错误的

public <T> void printPdf(T obj) {
    // create xml
    JAXBContext context = JAXBContext.newInstance(obj.getClass());
    Marshaller m = context.createMarshaller();
    m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
    StringWriter outWriter = new StringWriter();
    StreamResult result = new StreamResult(outWriter);
    m.marshal(obj, result);

    StringBuffer sb = outWriter.getBuffer();
    String finalstring = sb.toString();
    System.out.println(finalstring);
}
public void printPdf(T obj){
//创建xml
JAXBContext context=JAXBContext.newInstance(obj.getClass());
Marshaller m=context.createMarshaller();
m、 setProperty(Marshaller.JAXB_格式化的_输出,true);
StringWriter outWriter=新StringWriter();
StreamResult结果=新的StreamResult(outWriter);
m、 元帅(obj,结果);
StringBuffer sb=outWriter.getBuffer();
字符串finalstring=sb.toString();
系统输出打印LN(最终打印);
}
这就是目标:

@XmlRootElement
public class Invoice implements Validateable {
    private LocalDate date = LocalDate.now();
    private ObjectProperty<LocalDate> dueDate = new SimpleObjectProperty<LocalDate>(
            LocalDate.now().plusDays(20));
    // ========================================================================
    // date
    // ========================================================================
    public LocalDate getDate() {
        return date;
    }
    public void setDate(LocalDate date) {
        this.date = date;
    }
    // ========================================================================
    // companyName
    // ========================================================================
    public LocalDate getDueDate() {
        return this.dueDate.get();
    }
    public void setDueDate(LocalDate duedate) {
        this.dueDate.set(duedate);
    }
    public final ObjectProperty<LocalDate> dueDateProperty() {
        return dueDate;
    }
}
@XmlRootElement
公共类Invoice实现了可验证的{
private LocalDate=LocalDate.now();
private ObjectProperty dueDate=新的SimpleObject属性(
LocalDate.now().plusDays(20));
// ========================================================================
//日期
// ========================================================================
公共LocalDate getDate(){
返回日期;
}
公共无效设置日期(LocalDate){
this.date=日期;
}
// ========================================================================
//公司名称
// ========================================================================
public LocalDate getDueDate(){
返回此.dueDate.get();
}
public void setDueDate(LocalDate duedate){
this.dueDate.set(dueDate);
}
公共最终ObjectProperty dueDateProperty(){
归还日期;
}
}
这是XML输出:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<invoice>
    <date/>
    <dueDate/>
</invoice>


我怎样才能正确地转换它?如果有更好的东西,我不会坚持使用JAXB。

您可以使用JAXB
XmlAdapter
来控制如何将JSR-310对象转换为XML或从XML转换过来

此处的主题相同: