于是,一种新的处理方式用于对象和xml之间的映射就变得非常需要,还好sun提供了jaxb,一种很方便的方式来处理java对象和xml内容。下面通过一个实例来体会一下。
看一下如下的xml
别忘了生成相应的xsd,或者dtd文件,这是主要的配置:
xsd:
需要映射两个java对象,CustomerBo和AddressBo
java 对象可以通过xjc来生成。
或者自己定义(但需要增加相应的java注释,如@XmlAccessorType,@XmlType,这是给引擎使用的)
所以一般通过xjd自动生成
@XmlAccessorType(AccessType.FIELD)
@XmlType(name = "Customer", propOrder = {
"address",
"customerName"
})
public class CustomerBo {
protected Address address;
@XmlElement(name = "name")
protected String customerName;
@XmlAttribute
protected String id;
public Address getAddress() {
return address;
}
public String getCustomerName() {
return customerName;
}
public String getId() {
return id;
}
public void setAddress(Address value) {
this.address = value;
}
public void setCustomerName(String value) {
this.customerName = value;
}
public void setId(String value) {
this.id = value;
}
}
public class Address {
protected String street;
protected String city;
@XmlElement(name = "zip")
protected BigInteger zipCode;
public String getStreet() {
return street;
}
public void setStreet(String value) {
this.street = value;
}
public String getCity() {
return city;
}
public void setCity(String value) {
this.city = value;
}
public BigInteger getZipCode() {
return zipCode;
}
public void setZipCode(BigInteger value) {
this.zipCode = value;
}
}
定义jxb绑定文件:
xmlns:xs="http://www.w3.org/2001/XMLSchema">
collectionType="java.util.Vector"
typesafeEnumBase="xs:NCName"
choiceContentProperty="false"
typesafeEnumMemberName="generateError"
enableFailFastCheck="false"
generateIsSetMethod="false"
underscoreBinding="asCharInWord"/>