= BeanIO DataFormat
:doctitle: BeanIO
:shortname: beanio
:artifactid: camel-beanio
:description: Marshal and unmarshal Java beans to and from flat files (such as CSV, delimited, or fixed length formats).
:since: 2.10
:supportlevel: Stable
//Manually maintained attributes
:camel-spring-boot-name: beanio

*Since Camel {since}*

The BeanIO Data Format uses
http://beanio.org/[BeanIO] to handle flat payloads (such as XML, CSV,
delimited, or fixed length formats).

BeanIO is configured using a
http://beanio.org/2.0/docs/reference/index.html#TheMappingFile[mappings
XML] file where you define the mapping from the flat format to Objects
(POJOs). This mapping file is mandatory to use.

== Options

// dataformat options: START
include::partial$dataformat-options.adoc[]
// dataformat options: END

== Usage

An example of a
https://svn.apache.org/repos/asf/camel/trunk/components/camel-beanio/src/test/resources/org/apache/camel/dataformat/beanio/mappings.xml[mapping
file is here].

=== Using Java DSL

To use the `BeanIODataFormat` you need to configure the data format with
the mapping file, as well the name of the stream. +
 In Java DSL this can be done as shown below. The streamName is
"employeeFile".

Then we have two routes. The first route is for transforming CSV data
into a List<Employee> Java objects. Which we then
split, so the mock endpoint +
 receives a message for each row.

The 2nd route is for the reverse operation, to transform a
List<Employee> into a stream of CSV data.

The CSV data could for example be as below:

=== Using XML DSL

To use the BeanIO data format in XML, you need to configure it using the
<beanio> XML tag as shown below. The routes is similar to the example
above.

== Dependencies

To use BeanIO in your Camel routes you need to add a dependency on
*camel-beanio* which implements this data format.

If you use Maven you can just add the following to your pom.xml,
substituting the version number for the latest & greatest release (see
the download page for the latest versions).

[source,xml]
---------------------------------------
<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-beanio</artifactId>
  <version>2.10.0</version>
</dependency>
---------------------------------------


include::spring-boot:partial$starter.adoc[]
