避免使用XStreamMarshaller转义文本

时间:2018-11-16 11:46:15

标签: xml spring spring-ws xstream

我使用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封送器以不逃离<>

0 个答案:

没有答案