58.6. 忽略 NonXML Character
JaxbDataFormat 支持忽略 NonXML Character,只需将 filterNonXmlChars 属性设为 true,JxbDataFormat 会将 NonXML 字符替换为 " 当它处于 marshaing 或 unmarshaling 信息。您还可以通过设置 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());
以下示例演示了使用 Spring DSL 以及启用 Camel 的 NonXML 过滤:
<bean id="testXmlStreamWriterWrapper" class="org.apache.camel.jaxb.TestXmlStreamWriter"/> <jaxb filterNonXmlChars="true" contextPath="org.apache.camel.foo.bar" xmlStreamWriterWrapper="#testXmlStreamWriterWrapper" />