技术开发 频道

使用JAXB从一个对象模型中产生XML文档


IT168技术文档】 
    产生XML
    音乐公司销售它的音乐产品像乐器,唱片等,在它的地址薄中存储着两种类型的客户:个体和公司。每一个客户都有一个家庭地址和一系列的发货地址。发货地址可以是周末或早上有效,这些信息可以以标签的形式添加到地址薄中。其形式如下图所示:


    该公司想要以XML形式发送一些客户的信息给合作伙伴,因此它需要一个给定客户的对象模型的XML文档。使用JAXB实现起来很容易。下列代码创建了一个个体的实例并设置了他的属性(first name ,last name)一个家庭地址,两个发货地址。对象都设置好以后使用javax.xml.bind.Marshaller来产生个体对象的XML表示。 
    Listing 1: Creates an XML Representation of an Individual
// Instantiates Tag objects Tag tag1 = new Tag("working hours"); Tag tag2 = new Tag("week-ends"); Tag tag3 = new Tag("mind the dog"); // Instantiates an individual object with home address calendar.set(1940, 7, 7, 0, 0, 0); Individual individual = new Individual(1L, "Ringo", "Starr", "+187445",
"ringo@star.co.uk", calendar.getTime()); individual.setHomeAddress(new Address(2L, "Abbey Road", "London", "SW14", "UK")); // Instantiates a first delivery address Address deliveryAddress1 = new Address(3L, "Findsbury Avenue", "London", "CE451", "UK"); deliveryAddress1.addTag(tag1); deliveryAddress1.addTag(tag3); individual.addDeliveryAddress(deliveryAddress1); // Instantiates a second delivery address Address deliveryAddress2 = new Address(4L, "Camden Street", "Brighton", "NW487", "UK"); deliveryAddress2.addTag(tag1); deliveryAddress2.addTag(tag2); individual.addDeliveryAddress(deliveryAddress2); // Generates XML representation of an individual StringWriter writer = new StringWriter(); JAXBContext context = JAXBContext.newInstance(Customer.class); Marshaller m = context.createMarshaller(); m.marshal(individual, writer); System.out.println(writer);
    这段代码使用静态方法newInstance来产生JAXBContext的一个实例。创建Marshaller对象,然后调用marshal方法产生一个个体对象的XML表示,即StringWinter。 
0
相关文章