xml示例

eit6fx6z  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(220)

我正在努力在springdoc openapi库中生成正确的xml示例。
控制器:

@RestController
@RequestMapping(produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE })
public class MyController {
    @GetMapping
    public MonetaryValue getMonetaryValue() {
        return new MonetaryValue(BigDecimal.ONE, "EUR");
    }
}

模型

@Schema(name="price", description = "Monetary value")
@JacksonXmlRootElement(localName = "price")
public class MonetaryValue {
    @Schema(example = "EUR")
    @JsonProperty("cur")
    @JacksonXmlProperty(localName = "cur", isAttribute = true)
    private String currency;

    @Schema(example = "1.00")
    @JsonProperty("val")
    @JacksonXmlText
    private BigDecimal value;

    // getters, setter ...
}

用头调用的终结点 Accept: application/xml 返回预期结果:

<price cur="EUR">1</price>

然而,在springdoc中,jackson注解似乎被忽略了。swagger ui中显示的示例显示:

<value>
    <cur>EUR</cur>
    <val>1</val>
</value>

我还尝试添加jaxb注解。

@Schema(name="price", description = "Monetary value")
@JacksonXmlRootElement(localName = "price")
public class MonetaryValue {
        @Schema(example = "EUR")
    @JsonProperty("cur")
    @JacksonXmlProperty(localName = "cur", isAttribute = true)
    @XmlAttribute(name = "cur")
    private String currency;

    @Schema(example = "1.00")
    @JsonProperty("val")
    @JacksonXmlText
    @XmlValue
    private BigDecimal value;   
    // getters, setter ...
}

这在一定程度上有帮助,属性显示正确,但是 @XmlValue 注解似乎被忽略了。值显示在子元素中 val 而不是元素的文本。

<value cur="EUR">
    <val>1</val>
</value>

json示例毫无问题地工作。
github上的演示项目。
谢谢你的帮助。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题