Избегайте экранирования текста с помощью XStreamMarshaller - PullRequest
0 голосов
/ 16 ноября 2018

Я использую Spring WS и XStreamMarshaller для создания XML API.Мне нужно установить текстовые значения в XML, которые содержат специальные символы < и >.XStream по умолчанию экранирует такие символы, поэтому я получаю вывод следующим образом:

<description>&lt;mytag&gt;some text&lt;/mytag&gt
</description>

Однако мне нужно обернуть такие текстовые значения в CDATA, например, так:

<description><![CDATA[<mytag>some text</mytag>]]>
</description>

Я могуне найти, как настроить XStreamMarshaller, чтобы избежать экранирования специальных символов и использовать вместо него CDATA.Вот как выглядит моя конечная точка Spring WS:

@PayloadRoot(namespace = NAMESPACE_URI, localPart = METHOD)
@ResponsePayload
public DOMSource handleRequest(@RequestPayload DOMSource source) {
    MyRequest request = (MyRequest)xStreamMarshaller.unmarshal(source);
    MyResponse response = service.process(request);
    DOMResult result = new DOMResult();
    xStreamMarshaller.marshal(response, result);
    return new DOMSource(result.getNode());
}

Как настроить маршаллер xstream, чтобы он не экранировал < и >?

...