A practical guide to JAXB 2.0
Take a peek at its new features
Posted in Developer, 22nd September 2006 11:40 GMT
Watch Now : Virtual Machine Movement with Hyper-V
Unmarshalling an XML Document
In this section we shall unmarshal the example XML document, catalog.xml. In the JAXBUnMarshaller.java class create a JAXBContext object, which provides a JAXB context for implementing JAXB binding framework operations. A JAXBContext object is initialised with a colon-separated list of Java package names, which consist of schema-derived classes and user annotated classes.
JAXBContext jaxbContext = JAXBContext.newInstance("generated");
Create an Unmarshaller object, which is used to convert an XML document to a Java object.
Unmarshaller unMarshaller = jaxbContext.createUnmarshaller();
If the application were a JAXB 1.0 application, we would have set the Unmarshaller to be validating using setValidating()method. The setValidating() method has been deprecated in JAXB 2.0. Schema validation in JAXB 2.0 is performed using JAXP 1.3 validation API. Create a SchemaFactory object and create a Schema object from the SchemaFactory object. Set the schema on the Unmarshaller object. Error handling in JAXB 2.0 is implemented using the ValidationEventHandler interface. To add error handling to the example application, create a class CustomValidationEventHandler that implements the ValidatonEventHandler interface. Create a ValidationEventHandler object and set the ValidationEventHandler object on the Unmarshaller object.
Unmarshal using the unmarshal() method, which returns a parameterized JAXBElement object. The parameter type is CatalogType in the example application.
JAXBElement<CatalogType> catalogElement =(JAXBElement<CatalogType>) unMarshaller.unmarshal(xmlDocument);
Obtain a CatalogType object from the JAXBElement object.
CatalogType catalog=catalogElement.getValue();
Retrieve the journalTitle and publisher values. Obtain a parameterized list of parameter type JournalType. Iterate over the List object and obtain a parameterized list of parameter type ArticleType for each of the JournalType objects. Iterate over the parameterized list of parameter type ArticleType and output values for edition, title and author.
To run the JAXBUnMarshaller.java application in the Eclipse project JAXB2, right-click on the JAXBUnMarshaller.java application and select Run As>Run. Output generated by running the application in Eclipse is shown in Figure 7.

Marshalling an XML Document
In this section we shall marshal an XML document, catalog.xml. In the JAXBMarshaller.java class create a JAXBContext object with the procedure similar to the previous section. Create a Marshaller object, which is used to marshal a Java object to an XML document.
Marshaller marshaller = jaxbContext.createMarshaller();
To produce formatted output, set the Marshaller property jaxb.formatted.output to true.
marshaller.setProperty("jaxb.formatted.output",new Boolean(true));
Next, create a Java object representation of the XML document to be marshalled. Create an ObjectFactory object, which is used to initialise the Java object
ObjectFactory factory = new ObjectFactory();
Create a CatalogType object, which represents root element catalog.
CatalogType catalog = factory.createCatalogType();
Set the journalTitle and publisher attributes of root element catalog. Create a JournalType object, which represents a journal element. Get a list of parameter type JournalType from the CatalogType object and add the JournalType object to the List object.
JournalType journal = factory.createJournalType(); List<JournalType> journalList = catalog.getJournal(); journalList.add(journal);

Top 10 SIEM implementer’s checklist
The new Office Garage series:
IT infrastructure monitoring strategies
Data control in the cloud