JAXB XmlElement Annotation从String转换为int

时间:2014-06-24 15:58:59

标签: java xml jaxb annotations

我通过Web服务接收XML,并且我使用XmlElement Annotation将XML解析为Java。这是我如何使用注释。如果我正确使用它们,请告诉我。我对int领域特别感兴趣。它似乎工作,但我觉得我没有正确使用注释。我看到很多类似于@XmlElement的例子(name =“something”type = Integer.class)。是否也在XmlJavaTypeAdapter注释上建议了此类型属性?我为一长串问题道歉,这是我第一次使用XmlElement注释,我想确保我做得对。提前感谢您的帮助。

@XmlRootElement(name="Person")
public class Person {
    @XmlElement(name="FirstName")
    public String firstName = "";

    @XmlElement(name="LastName")
    public String lastName="";

    @XmlElement(name="Age")
    public int age = 0;

    @XmlElement(name="BirthDate")
    @XmlJavaTypeAdapter(DateAdapter.class)
    public Date birthDate = new Date(0);
}


public class DateAdapter extends XmlAdapter<String, Date> {
    private static final DateFormat FORMAT = new SimpleDateFormat("yyyy-MM-dd");

    @Override
    public String marshal(Date date) throws Exception {
        return (date == null) ? "" : FORMAT.format(date);
    }

    @Override
    public Date unmarshal(String str) throws Exception {
        return FORMAT.parse(str);
    }
}

1 个答案:

答案 0 :(得分:3)

在我看来,你的解决方案是正确的。

但是,如果Age元素可能包含int,则可能需要将Integer替换为null(您应该检查XSD文件中Person元素的定义(如果是是一个Web服务,你可以在wsdl文件中找到xsd))。