158.6. NonXML 文字を無視する
この機能は Camel 2.2.0 の新機能です。
JaxbDataFromat は NonXML 文字を無視することをサポートしています。filterNonXmlChars プロパティーを true に設定する必要があります。JacbDataFormat は NonXML 文字は " で、メッセージをマーシャリングまたはアンマーシャリングするときに " に置き換えられます。また、Exchange プロパティー Exchange.FILTER_NON_XML_CHARS
を設定して実行することもできます。
JDK 1.5 | JDK 1.6+ | |
---|---|---|
使用中のフィルタリング | Stax API および実装 | 非対応 |
使用されていないフィルタリング | Stax API のみ | 非対応 |
この機能は、Woodstox 3.2.9 および Sun JDK 1.6 StAX 実装でテストされています。
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" />