JAXB
Using the Java DSL
For example the following uses a named DataFormat of jaxb which is
configured with a number of Java package names to initialize the
JAXBContext.
DataFormat jaxb = new JaxbDataFormat("com.acme.model");
from("activemq:My.Queue").
unmarshal(jaxb).
to("mqseries:Another.Queue");
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.
from("activemq:My.Queue").
unmarshal("myJaxbDataType").
to("mqseries:Another.Queue"); Using Spring XML
The following example shows how to use JAXB to unmarshal using Spring
configuring the jaxb data type
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:start"/>
306 DATA FORMAT APPENDIX
<unmarshal>
<jaxb prettyPrint="true" contextPath="org.apache.camel.example"/>
</unmarshal>
<to uri="mock:result"/>
</route>
</camelContext>
This example shows how to configure the data type just once and reuse it on
multiple routes. For Camel versions below 1.5.0 you have to set the <jaxb>
element directly in <camelContext>.
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<dataFormats>
<jaxb id="myJaxb" prettyPrint="true" contextPath="org.apache.camel.example"/>
</dataFormats>
<route>
<from uri="direct:start"/>
<marshal ref="myJaxb"/>
<to uri="direct:marshalled"/>
</route>
<route>
<from uri="direct:marshalled"/>
<unmarshal ref="myJaxb"/>
<to uri="mock:result"/>
</route>
</camelContext>
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.
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:marshal"/>
<marshal>
<jaxb prettyPrint="false" contextPath="org.apache.camel.example"
partClass="org.apache.camel.example.PurchaseOrder" Multiple context paths
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.
fragment="true"
partNamespace="{http://example.camel.org/apache}po" />
</marshal>
<to uri="mock:marshal"/>
</route>
<route>
<from uri="direct:unmarshal"/>
<unmarshal>
<jaxb prettyPrint="false" contextPath="org.apache.camel.example"
partClass="org.apache.camel.example.Partial" />
</unmarshal>
<to uri="mock:unmarshal"/>
</route>
</camelContext>
For marshalling you have to add partNamespace attribute with QName of
destination namespace. Example of Spring DSL you can find above.
XMLBEANS
XmlBeans is a Data Format which uses the XmlBeans library to unmarshal an
XML payload into Java objects or to marshal Java objects into an XML
payload.XSTREAM
XStream is a Data Format which uses the XStream library to marshal and
unmarshal Java objects to and from XMLCSV
EDI DATAFORMAT
FLATPACK DATAFORMAT
JSON
TIDYMARKUP
TidyMarkup is a Data Format that uses the TagSoup to tidy up HTML. It can be
used to parse ugly HTML and return it as pretty wellformed HTMLANNOTATIONS
XMLSECURITY DATA FORMAT
The XMLSecurity DataFormat facilitates encryption and decryption of XML
payloads at the Document, Element and Element Content levels (including
simultaneous multi-node encryption/decryption using XPATH)CASTOR
Castor is a Data Format which uses the Castor XML library to unmarshal an
XML payload into Java objects or to marshal Java objects into an XML
payloadProtobuf - Protocol Buffers
Camel Data Format
原创mb649d3a75b51a2 ©著作权
©著作权归作者所有:来自51CTO博客作者mb649d3a75b51a2的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
TDengine Invalid data format 问题定位
Invalid data format 看语义是数据类型不符,通常这个报错出现在使用行协议写入时。如果是批量数据写入,想定位是哪条语句的问题,需要查看客户端日志。
tdengine 大数据 时序数据库 #define 数据类型