168.7. 忽略 NonXML Character

这个功能是 Camel 2.2.0 的新功能。
JaxbDataFromat 支持忽略 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 实现进行测试。

现在 ,为 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" />