// spring-boot-auto-configure options: START
:page-partial:
:doctitle: Camel Spring Boot Starter for tagsoup

== Spring Boot Auto-Configuration

When using tagsoup with Spring Boot make sure to use the following Maven dependency to have support for auto configuration:

[source,xml]
----
<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-tagsoup-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 3 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.dataformat.tidymarkup.data-object-type* | What data type to unmarshal as, can either be org.w3c.dom.Node or java.lang.String. Is by default org.w3c.dom.Node | org.w3c.dom.Node | String
| *camel.dataformat.tidymarkup.enabled* | Whether to enable auto configuration of the tidyMarkup data format. This is enabled by default. |  | Boolean
| *camel.dataformat.tidymarkup.omit-xml-declaration* | When returning a String, do we omit the XML declaration in the top. | false | Boolean
|===
// spring-boot-auto-configure options: END
