167.6. NonXML 문자 무시
이 기능은 Camel 2.2.0의 새로운 기능입니다.
JaxbDataFromat는 NonXML Character 를 무시하도록 지원하며, filterNonXmlChars 속성을 true로 설정하면 JaxbDataFormat은 비XML 문자를 "를 마샬링하거나 메시지 마샬링 해제로 바꿉니다. 또한 Exchange 속성 Exchange.FILTER_NON_XML_CHARS 를 설정하여 수행할 수도 있습니다.
| JDK 1.5 | JDK 1.6+ | |
|---|---|---|
| 사용 중인 필터링 | Stax API 및 구현 | 없음 |
| 사용되지 않는 필터링 | Smartax 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());
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" />