167.6. XML 以外の文字の無視
この機能は Camel 2.2.0 の新機能です。
JaxbDataFormat では、NonXML Character を無視できます。filterNonXmlChars プロパティーを true に設定するだけで、JaxbDataFormat はメッセージのマーシャリングまたはアンマーシャリング時に 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 実装でテストされています。
New for Camel 2.12.1
JaxbDataFormat では、ストリームを XML にマーシャリングするために使用される XMLStreamWriter をカスタマイズできるようになりました。この設定を使用すると、独自のストリームライターを追加して、xml 以外の文字を完全に削除、エスケープ、または置換できます。
JaxbDataFormat customWriterFormat = new JaxbDataFormat("org.apache.camel.foo.bar"); customWriterFormat.setXmlStreamWriterWrapper(new TestXmlStreamWriter());
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" />
<bean id="testXmlStreamWriterWrapper" class="org.apache.camel.jaxb.TestXmlStreamWriter"/>
<jaxb filterNonXmlChars="true" contextPath="org.apache.camel.foo.bar" xmlStreamWriterWrapper="#testXmlStreamWriterWrapper" />