168.7. XML 以外の文字の無視

この機能は Camel 2.2.0 の新機能です。
JaxbDataFormat では、NonXML Character を無視できます。filterNonXmlChars プロパティーを true に設定するだけで、JaxbDataFormat はメッセージのマーシャリングまたはアンマーシャリング時に NonXML 文字を " " に置き換えます。Exchange プロパティー Exchange.FILTER_NON_XML_CHARS を設定して行うこともできます。

 

 JDK 1.5JDK 1.6 以降

フィルタリングの使用

StAX API と実装

いいえ

フィルタリングの使用なし

StAX API のみ

いいえ

この機能は、Woodstox 3.2.9 および Sun JDK 1.6 StAX 実装でテストされています。

New for Camel 2.12.1
JaxbDataFormat では、ストリームを XML にマーシャリングするために使用される XMLStreamWriter をカスタマイズできるようになりました。この設定を使用すると、独自のストリームライターを追加して、xml 以外の文字を完全に削除、エスケープ、または置換できます。

   JaxbDataFormat customWriterFormat = new JaxbDataFormat("org.apache.camel.foo.bar");
  customWriterFormat.setXmlStreamWriterWrapper(new TestXmlStreamWriter());

次の例は、Spring DSL を使用し、Camel の NonXML フィルタリングも有効にすることを示しています。

<bean id="testXmlStreamWriterWrapper" class="org.apache.camel.jaxb.TestXmlStreamWriter"/>
<jaxb filterNonXmlChars="true"  contextPath="org.apache.camel.foo.bar" xmlStreamWriterWrapper="#testXmlStreamWriterWrapper" />