У меня есть проект 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](https://i.stack.imgur.com/mOXdd.png)
но когда я использую "application / xml", CDATA добавляется, но lt и gt неправильно отображаются в теле ответа:
![enter image description here](https://i.stack.imgur.com/VaKdh.png)
Возможно ли, чтобы теги CDATA отображались должным образом (<![CDATA[ value ]]>
) в теле ответа swagger?