...
For example the following uses a named DataFormat of jaxb which is configured with a number of Java package names to initialize the JAXBContext.
...
You can if you prefer use a named reference to a data format which can then be defined in your Registry such as via your Spring XML file. e.g.
...
...
Using Spring XML
The following example shows how to use JAXB to unmarshal using Spring configuring the jaxb data type Wiki Markup Wiki Markup
...
It is possible to use this data format with more than one context path. You can specify context path using :
as separator, for example com.mycompany:com.mycompany2
. Note that this is handled by JAXB implementation and might change if you use different vendor than RI.
Partial marshalling/unmarshalling
This feature is new to Camel 2.2.0.
JAXB 2 supports marshalling and unmarshalling XML tree fragments. By default JAXB looks for @XmlRootElement
annotation on given class to operate on whole XML tree. This is useful but not always - sometimes generated code does not have @XmlRootElement annotation, sometimes you need unmarshall only part of tree.
In that case you can use partial unmarshalling. To enable this behaviours you need set property partClass
. Camel will pass this class to JAXB's unmarshaler. Wiki Markup partNamespace
attribute with QName of destination namespace. Example of Spring DSL you can find above.
...
New for Camel 2.12.1
JaxbDataFormat now allows you to customize the XMLStreamWriter used to marshal the stream to XML. Using this configuration, you can add your own stream writer to completely remove, escape, or replace non-xml characters.
...
...
The following example shows using the Spring DSL and also enabling Camel's NonXML filtering:
...
...
Working with the ObjectFactory
...
In this Spring DSL we have defined to use iso-8859-1
as the encoding: Wiki Markup
Controlling namespace prefix mapping
...
For example in Spring XML we can define a Map with the mapping. In the mapping file below, we map SOAP to use soap as prefix. While our custom namespace "http://www.mycompany.com/foo/2" is not using any prefix.
...
To use this in JAXB or SOAP you refer to this map, using the namespacePrefixRef
attribute as shown below. Then Camel will lookup in the Registry a java.util.Map
with the id "myMap", which was what we defined above.
...
...
Schema validation
Available as of Camel 2.11
...
Camel 2.11.0 and 2.11.1 has a known issue by validation multiple Exchange
's in parallel. See CAMEL-6630. This is fixed with Camel 2.11.2/2.12.0.
Using the Java DSL, you can configure it in the following way:
...
You can do the same using the XML DSL:
...
...
Camel will create and pool the underling SchemaFactory
instances on the fly, because the SchemaFactory
shipped with the JDK is not thread safe.
However, if you have a SchemaFactory
implementation which is thread safe, you can configure the JAXB data format to use this one:
...
...
Schema Location
Available as of Camel 2.14
...
Using the Java DSL, you can configure it in the following way:
...
...
You can do the same using the XML DSL:
...
...
Marshal data that is already XML
...