53.8. 忽略 Non-XML Characters
JaxbDataFormat
支持忽略 Non-XML Characters。将 filterNonXmlChars
属性设置为 true
。JaxbDataFormat
将在消息 marshalling 或 unmarshalling 期间,将任何非 XML 字符替换为空格字符(" "
)。您还可以设置 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 实现进行了测试。
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 的非 XML 过滤:
<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" />