54.8. 非 XML 文字を無視する
JaxbDataFormat では、非 XML 文字 を無視できます。filterNonXmlChars プロパティーを true に設定します。JaxbDataFormat は、メッセージのマーシャリングまたはアンマーシャリング中に、非 XML 文字をスペース文字 (" ") に置き換えます。エクスチェンジプロパティー Exchange.FILTER_NON_XML_CHARS を設定することもできます。
| JDK 1.5 | JDK 1.6 以降 | |
|---|---|---|
| フィルタリングの使用 | StAX API と実装 | いいえ |
| フィルタリングの使用なし | StAX API のみ | いいえ |
この機能は、Woodstox 3.2.9 および Sun JDK 1.6 StAX 実装でテストされています。
JaxbDataFormat では、ストリームを XML にマーシャリングするために使用される XMLStreamWriter をカスタマイズできるようになりました。この設定を使用すると、独自のストリームライターを追加して、非 XML 文字を完全に削除、エスケープ、または置換できます。
JaxbDataFormat customWriterFormat = new JaxbDataFormat("org.apache.camel.foo.bar");
customWriterFormat.setXmlStreamWriterWrapper(new TestXmlStreamWriter());
次の例は、Spring DSL の使用と、Camel の非 XML フィルタリングの有効化を示しています。
<bean id="testXmlStreamWriterWrapper" class="org.apache.camel.jaxb.TestXmlStreamWriter"/>
<jaxb filterNonXmlChars="true" contextPath="org.apache.camel.foo.bar" xmlStreamWriterWrapper="#testXmlStreamWriterWrapper" />