O'Reilly logo

Jakarta Commons Cookbook by Timothy M. O'Brien

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

6.8. Customizing XML Generated from an Object

Problem

You are trying to create an XML document from a Java object, and you want to customize the layout and structure of the generated XML document.

Solution

Use a Betwixt mapping file to customize the output of the BeanWriter. Below is an example of a mapping file for the Play class, which was introduced in Recipe 6.2. When Betwixt serializes or deserializes an object to or from XML, it will search for a resource, <classname>.betwixt, in the same package as the class to be written or read. The following XML document—Play.betwixt—is stored in the same package as the Play class, and it customizes the XML output from Betwixt:

<info primitiveTypes="element">
  <element name="play">
    <attribute name="genre" property="genre"/>
    <attribute name="year" property="year"/>
    <attribute name="language" property="language"/>
    <addDefaults/>
  </element>
</info>

This file tells Betwixt that genre, year, and language shall be stored as XML attributes, and that the remaining bean properties are to be written as XML elements. The following code is used to create a customized XML document from an instance of Play:

import org.apache.commons.betwixt.io;

Play play = (Play) plays.get(0);
        
BeanWriter beanWriter = new BeanWriter( );
beanWriter.enablePrettyPrint( );
beanWriter.write( play );
        
logger.debug( beanWriter.toString( ) );

Betwixt creates the following XML document, which stores the genre, year, and language properties as attributes of the play element. The ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required