Basic Examples
This section describes the Basic examples (Modify Marshal, Unmarshal Validate) that demonstrate how to:
- Unmarshal an XML document into a Java content tree and access the data contained within it
- Modify a Java content tree
- Use the
ObjectFactory
class to create a Java content tree from scratch and then marshal it to XML data- Perform validation during unmarshalling
- Validate a Java content tree at runtime
Modify Marshal Example
The Modify Marshal example demonstrates how to modify a Java content tree.
- The
<
INSTALL
>/javaeetutorial5/examples/jaxb/modify-marshal/Main.java
class declares imports for three standard Java classes plus four JAXB binding framework classes andprimer.po
package:
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigDecimal;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import primer.po.*;- A
JAXBContext
instance is created for handling classes generated inprimer.po
.
JAXBContext jc = JAXBContext.newInstance( "primer.po" );
- An
Unmarshaller
instance is created, andpo.xml
is unmarshalled.
Unmarshaller u = jc.createUnmarshaller();
PurchaseOrder po =
(PurchaseOrder)u.unmarshal(
new FileInputStream( "po.xml" ) );set
methods are used to modify information in theaddress
branch of the content tree.
USAddress address = po.getBillTo();
address.setName( "John Bob" );
address.setStreet( "242 Main Street" );
address.setCity( "Beverly Hills" );
address.setState( "CA" );
address.setZip( new BigDecimal( "90210" ) );- A
Marshaller
instance is created, and the updated XML content is marshalled tosystem.out
. ThesetProperty
API is used to specify output encoding; in this case formatted (human readable) XML format.
Marshaller m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
Boolean.TRUE);
m.marshal( po, System.out );Building and Running the Modify Marshal Example Using NetBeans 5.5
Follow these instructions to build and run the Modify Marshal example on your Application Server instance using the NetBeans 5.5 IDE.
Building and Running the Modify Marshal Example Using Ant
To compile and run the Modify Marshal example using Ant, in a terminal window, go to the
<INSTALL>
/javaeetutorial5/examples/jaxb/modify-marshal/
directory and type the following:Unmarshal Validate Example
The Unmarshal Validate example demonstrates how to enable validation during unmarshalling. Note that JAXB provides functions for validation during unmarshalling but not during marshalling. Validation is explained in more detail in More about Validation.
- The
<
INSTALL
>/javaeetutorial5/examples/jaxb/unmarshal-validate/Main.java
class declares imports for three standard Java classes plus seven JAXB binding framework classes and theprimer.po
package:
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigDecimal;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.UnmarshalException;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.ValidationEvent;
import javax.xml.bind.util.ValidationEventCollector;
import primer.po.*;- A
JAXBContext
instance is created for handling classes generated inprimer.po
.
JAXBContext jc = JAXBContext.newInstance( "primer.po" );
- An
Unmarshaller
instance is created.
Unmarshaller u = jc.createUnmarshaller();
- The default JAXB
Unmarshaller
ValidationEventHandler
is enabled to send to validation warnings and errors tosystem.out
. The default configuration causes the unmarshal operation to fail upon encountering the first validation error.
u.setValidating( true );
- An attempt is made to unmarshal
po.xml
into a Java content tree. For the purposes of this example, thepo.xml
contains a deliberate error.
PurchaseOrder po =
(PurchaseOrder)u.unmarshal(
new FileInputStream("po.xml"));- The default validation event handler processes a validation error, generates output to
system.out
, and then an exception is thrown.
} catch( UnmarshalException ue ) {
System.out.println( "Caught UnmarshalException" );
} catch( JAXBException je ) {
je.printStackTrace();
} catch( IOException ioe ) {
ioe.printStackTrace();Building and Running the Unmarshal Validate Example Using NetBeans 5.5
Follow these instructions to build and run the Unmarshal Validate example on your Application Server instance using the NetBeans 5.5 IDE.
Building and Running the Unmarshal Validate Example Using Ant
To compile and run the Unmarshal Validate example using Ant, in a terminal window, go to the
<INSTALL>
/javaeetutorial5/examples/jaxb/unmarshal-validate/
directory and type the following: