我们非常成功地在Camel中执行POJO到/从XML转换。以下代码举例说明了我们如何使用Camel的典型案例。我们的应用程序监听Oracle AQ。队列条目是一个xml String。然后将xml转换为POJO类(MyClass),然后我们使用来自其他源的数据对MyClass进行一些转换。在此转换之后,POJO对象被转换回字符串并发送到其他系统(这里我们保存到文件中)
<route id="testing">
<from uri="oracleaq:queue:FUSEQUEUE"/>
<convertBodyTo type="generated.MyClass"/>
<bean ref="mainReqprocessor" method="Modify"/>
<convertBodyTo type="java.lang.String"/>
<setHeader headerName="Exchange.FILE_NAME">
<simple>output.xml</simple>
</setHeader>
<to uri="file:C:\\Temp\\OUT"/>
</route>
直到昨天我们将html标签引入POJO类的一个文本字段时,一切正常。我们用CData“&lt;![CDATA [”+ str +“]]&gt;”包装了文本。但是,当POJO转换为字符串时,编码仍然发生在CGata部分的开始和结束括号中,如下所示。因此,生成的xml字符串不再是有效的xml,因此无法将其转换回MyClass以用于其他应用程序。这不是理想的行为。如何避免CDATA起始和结束括号上的编码?[注意:第一个&lt;最后一个&gt;在cdata中编码。]
<TEXT>
&lt;![CDATA[&lt;html&gt;&lt;div&gt;&lt;pre&gt;COMPONENT PARTS.&lt;/br&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/html&gt;]]&gt;
<\/TEXT>
答案 0 :(得分:1)
虽然您有编组/解组问题,但您没有提及如何将XML转换为POJO并返回。这将是一个非常重要的信息来帮助。
如果您使用JAXB进行转换,此Q / A可能对您有所帮助: JAXB Marshalling Unmarshalling with CDATA