Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAXB XmlElement注释从字符串转换为int_Java_Xml_Jaxb_Annotations - Fatal编程技术网

Java JAXB XmlElement注释从字符串转换为int

Java JAXB XmlElement注释从字符串转换为int,java,xml,jaxb,annotations,Java,Xml,Jaxb,Annotations,我通过web服务接收XML,并使用XmlElement注释将XML解析为Java。下面是我如何使用注释的。请让我知道我是否正确使用它们。我对int领域特别感兴趣。它似乎在工作,但我觉得我没有正确使用注释。我看到许多类似于@xmlement(name=“something”type=Integer.class)的示例。XmlJavaTypeAdapter注释中是否也建议使用此类型属性?我为这么多问题道歉,这是我第一次使用XmlElement注释,我想确保我做得正确。提前感谢您的帮助 @XmlRoo

我通过web服务接收XML,并使用XmlElement注释将XML解析为Java。下面是我如何使用注释的。请让我知道我是否正确使用它们。我对int领域特别感兴趣。它似乎在工作,但我觉得我没有正确使用注释。我看到许多类似于@xmlement(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);
    }
}
@XmlRootElement(name=“Person”)
公共阶层人士{
@xmlement(name=“FirstName”)
公共字符串firstName=“”;
@xmlement(name=“LastName”)
公共字符串lastName=“”;
@xmlement(name=“Age”)
公共年龄=0;
@xmlement(name=“生日”)
@XmlJavaTypeAdapter(DateAdapter.class)
公共日期出生日期=新日期(0);
}
公共类DateAdapter扩展了XmlAdapter{
私有静态最终日期格式=新的SimpleDataFormat(“yyyy-MM-dd”);
@凌驾
公共字符串封送处理程序(日期)引发异常{
返回(日期==null)?“”:FORMAT.FORMAT(日期);
}
@凌驾
公共日期解组(字符串str)引发异常{
返回格式.parse(str);
}
}

我认为你的解决方案是正确的


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

年龄不能为空,但我担心它会被当作一个空标签。这将采用我输入的默认值(0)。如果Age元素的定义至少包含以下属性之一:minOccurs=“1”nillable=“false”它不能为空,并且如果验证xml文件(并且应该验证该文件),验证将引发异常。