Как использовать CDATA в приложениях Spring Boot и Swagger - PullRequest
0 голосов
/ 15 марта 2019

У меня есть проект Java Spring Boot и Swagger. Мне нужно использовать теги CDATA для значений между тегами XML, и для этой цели я использовал XMLAdapter:

    public class CDATAadapter extends XmlAdapter<String, String>{

    private final static String IN_PROLOG = "<![CDATA[";
    private final static String OUT_PROLOG = "]]";

    @Override
    public String unmarshal(String v) throws Exception {
        return v;
    }

    @Override
    public String marshal(String v) throws Exception {

        return IN_PROLOG.concat(v).concat(OUT_PROLOG);
    }

}

public class Names {

    @XmlAttribute(name="ref")
    @ApiModelProperty(notes = "The auto-generated version of the product")
    private String key;

    @XmlValue
    @XmlJavaTypeAdapter(value=CDATAadapter.class)
    @ApiModelProperty(notes = "The auto-generated version of the product")
    private String name;

    @XmlRootElement(name="root")
public class NamesContainer {

    @XmlElement(name="listNames")
    @ApiModelProperty(notes = "The auto-generated version of the product")
    private List<Names> listNames;

В методе @Get я возвращаю NamesContainer.java в качестве ответа.

Когда я выполняю метод get swagger с media type = "application / json" все в порядке: enter image description here

но когда я использую "application / xml", CDATA добавляется, но lt и gt неправильно отображаются в теле ответа: enter image description here

Возможно ли, чтобы теги CDATA отображались должным образом (<![CDATA[ value ]]>) в теле ответа swagger?

...