Кодирование в POJO в / из XML-конвертации в Camel

Мы очень успешно выполнили преобразование POJO в / из XML в Camel. Следующий код иллюстрирует типичный случай, как мы используем 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 "". Но когда POJO преобразуется в строку, кодирование все еще происходит в начальных и конечных скобках раздела CGata, например, в следующем. Из-за этого полученная строка xml больше не является действительным xml и поэтому не может быть преобразована обратно в MyClass для другого приложения. Это не желаемое поведение. Как можно избежать кодирования в начальных и конечных скобках CDATA?[Примечания: первый <и последний> в cdata кодируются.]

<TEXT>

&amp;lt;![CDATA[&amp;lt;html&amp;gt;&amp;lt;div&amp;gt;&amp;lt;pre&amp;gt;COMPONENT PARTS.&amp;lt;/br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/html&amp;gt;]]&amp;gt;

<\/TEXT>

1 ответ

Хотя у вас есть проблема с маршалингом / демаршаллингом, вы не упоминаете, как конвертируете XML в POJO и обратно. Это было бы очень важной информацией, чтобы помочь.

Если вы используете JAXB для конвертации, вам могут помочь следующие вопросы и ответы: JAXB Marshalling Unmarshalling with CDATA

Другие вопросы по тегам