使用jaxb绑定不匹配的xml和类

时间:2014-07-15 08:35:48

标签: java jaxb

我正在尝试解组xml,如下所示。

<findCustomerProfileRequest>
    <customer>
        <mobileNumber>9999999911</mobileNumber>
    </customer>
    <dataRecord>
        <totalRecords>10</totalRecords>
        <pagingSize>10</pagingSize>
        <offsetValue>0</offsetValue>
    </dataRecord>
</findCustomerProfileRequest>

我有一个班级文件

我想将它绑定到类

public class Customer {
    private String mobileNo;
    private String totalRecords;
    private String pagingSize;
    private String offsetValue;
    ....
      getters and setters
    ....
}

我该怎么办?我是JAXB的新手。有什么建议吗?

提前致谢。

更新

注释后

@XmlRootElement(name = "customer")
///@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {

    @XmlElement(name = "mobileNumber", required = true)
    private String mobileNumber;
    private String totalRecords;
    private String pagingSize;
    private String offsetValue;

2 个答案:

答案 0 :(得分:0)

如何使用正确的XSD然后为实际的XML生成类。生成后,您只需将生成的类的属性复制到特定的类中即可。

答案 1 :(得分:0)

您必须使用JAXB注释

注释您的Customer类

e.g。

@XmlRootElement(name = "Customer")
public class Customer {
    @XmlElement(name = "mobileNo", required = true)
    private String mobileNo;
    ....
}

正如@Puneetsri所说,如果你有一个xsd文件,你可以使用eclipse生成那些带注释的类。如果您没有它,您可以从XML文件创建该XSD文件,您可以使用许多在线XSD生成器。

如何绑定它们取决于目的...如果您使用的是webservices,或者是宁静的服务,那么JAX-RS和JAX-WS可以自动绑定它。

如果你正在做一个&#34; ad-hoc&#34; unmarshal你可以将xml作为字符串传递给unmarshaller,例如

JAXB.unmarshal(String xml, Class<T> type)