blob: 7f15714895b417aa2d581fc3350755617b625cd9 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<faqs xmlns="http://maven.apache.org/FML/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/FML/1.0 http://maven.apache.org/xsd/fml-1.0.xsd"
title="Frequently Asked Questions"
toplink="false">
<part id="general">
<faq id="cdata">
<question>
Synapse seems to replace CDATA sections in incoming messages by text nodes.
Why does this happen?
</question>
<answer>
<p>Woodstox, the XML parser used by Synapse, by default works in coalescing mode,
implying that adjacent CDATA sections and text nodes are combined and reported as
a single CHARACTER event. Therefore information about CDATA sections is lost. Note
that enabling coalescing by default is contrary to the StAX specifications and this
is a <a href="http://jira.codehaus.org/browse/WSTX-140">bug</a> in the Woodstox
version used by Synapse.</p>
<p>Starting with version 1.2.9, Axiom has a feature that allows to control the
settings of the underlying StAX implementation (see the Javadoc of the StAXUtils
class for more details). This can be used to switch off coalescing, so that CDATA
sections will be preserved. To achieve this, create an
<tt>XMLInputFactory.properties</tt> file with the following content:</p>
<pre>
javax.xml.stream.isCoalescing=false
</pre>
<p>This file needs to be placed in the classpath of Synapse. For a standalone
deployment, the right place is the <tt>lib</tt> directory and for a WAR deployment,
place the file into <tt>WEB-INF/classes</tt>. Since Synapse 1.3 only ships with
Axiom 1.2.8, you will also have to replace the corresponding JARs by newer versions.
Note that at the time of writing, Axiom 1.2.9 has not yet been released and the
required feature is only available in snapshot versions of Axiom.</p>
</answer>
</faq>
</part>
</faqs>