xml-parsing - POJO中的编码与Camel中的XML转换
问题描述
我们已经非常成功地在 Camel 中执行 POJO 到 XML 的转换。下面的代码举例说明了我们如何使用 Camel 的一个典型案例。我们的应用程序监听 Oracle AQ。队列条目是一个 xml 字符串。然后将 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 "<![CDATA[" + str + "]]>" 包裹了文本。但是,当 POJO 转换为字符串时,编码仍然发生在 CGata 部分的开始和结束括号上,如下所示。因此,生成的 xml 字符串不再是有效的 xml,因此无法将其转换回 MyClass 以供其他应用程序使用。这不是期望的行为。如何避免 CDATA 开始和结束括号的编码?[注意: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>
解决方案
尽管您有编组/解组的问题,但您没有提及如何将 XML 转换为 POJO 并返回。这将是一个非常重要的信息,可以提供帮助。
如果您使用 JAXB 进行转换,此 Q/A 可能会对您有所帮助: JAXB Marshalling Unmarshalling with CDATA
推荐阅读
- javascript - Javascript:如何放大我的画布以使我的功能仍然有效?
- nativescript - 为什么 NativeScript CLI 命令“tns 设备”只是挂起?
- css - 奇数 SVG 三次贝塞尔动画(曲线到点/线)
- r - 带有集合 x、y 和填充类别 R 的条形图
- javascript - 使用 react-redux 在单击按钮时添加新的精确元素
- ios - 为什么 swift 枚举在 swift 4.1 中返回错误的 hashValue?
- html - 如何使用 css 屏蔽与输入类型密码相同的跨度字符
- django - 在 django 表单中填充字段值
- azure - 如何使用服务总线队列优雅地停止工作角色
- react-native - 在视图中添加网络链接