使用JAXB从一个对象模型中产生XML文档
【IT168技术文档】
接下来要做的就是增加@XmlRootElement注释到Customer类中,@XmlRootElement注释通知JAXB被注释的类是XML文档的根元素。如果该注释丢失,JAXB将抛出异常。如果增加了注释并运行程序将会得到下列XML文档:
Listing 2: XML Representation of an Individual
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer>
<deliveryAddresses>
<city>London</city>
<country>UK</country>
<id>3</id>
<street>Findsbury Avenue</street>
<tags>
<name>working hours</name>
</tags>
<tags>
<name>mind the dog</name>
</tags>
<zipcode>CE451</zipcode>
</deliveryAddresses>
<deliveryAddresses>
<city>Brighton</city>
<country>UK</country>
<id>4</id>
<street>Camden Street</street>
<tags>
<name>working hours</name>
</tags>
<tags>
<name>week-ends</name>
</tags>
<zipcode>NW487</zipcode>
</deliveryAddresses>
<email>ringo@star.co.uk</email>
<homeAddress>
<city>London</city>
<country>UK</country>
<id>2</id>
<street>Abbey Road</street>
<zipcode>SW14</zipcode>
</homeAddress>
<id>1</id>
<telephone>+187445</telephone>
</customer>
通过一个注释@XmlRootElemen,一个Marshaller对象和异常产生的代码,可以很容易的得到对象图形的XML表示。根元素<customer>代表Customer对象,它包括所有的属性(一个家庭地址,两个发货地址,一个ID,一个电话号码等)。
定制XML文档
音乐公司和他的商业伙伴对上面给出的XML文档(Listing 2)并不完全满意,他们可能抛弃某些信息(地址标识符号,tags)出生日期的格式,订单的某些属性等。由于有了javax.xml.bind.annotation包的注释,JAXB提供了一种方式来定制和控制XML的结构。
首先,如果你想抛弃<customer>元素而使用<individual>或者<company>来替代根元素。如果让JAXB不使用抽象Customer类,可以放弃使用@XmlRootElement而使用@XmlTransient来产生临时类。
0
相关文章
