Spring boot Spring Boot列表查询的XML序列化

Spring boot Spring Boot列表查询的XML序列化,spring-boot,Spring Boot,我正在尝试从@RestController返回XML。XML是Car的序列化列表 XML序列化并不像我预期的那样工作。序列化不使用对象名作为元素名..,它只使用..。我不知道如何改变这种行为 简单的例子是: 我已在POM中包含以下依赖项: com.fasterxml.jackson.dataformat 简单示例项目我已签出您的项目,并为汽车列表添加了一个包装器,将其设置为JacksonXmlRootElement,并将汽车列表定义为该类的一个属性: 汽车类: <Cars>

我正在尝试从
@RestController
返回XML。XML是
Car
的序列化
列表

XML序列化并不像我预期的那样工作。序列化不使用对象名作为元素名
..
,它只使用
..
。我不知道如何改变这种行为

简单的例子是:

我已在POM中包含以下依赖项:


com.fasterxml.jackson.dataformat


简单示例项目

我已签出您的项目,并为汽车列表添加了一个包装器,将其设置为
JacksonXmlRootElement
,并将汽车列表定义为该类的一个属性:

汽车类:

<Cars>
    <Car>
        <id>1</id>
        <make>Ford</make>
        <model>Fiesta</model>
    </Car>
    <Car>
        <id>2</id>
        <make>Ford</make>
        <model>Mustang</model>
    </Car>
    <Car>
        <id>3</id>
        <make>Ford</make>
        <model>GT40</model>
    </Car>
</Cars>
@数据
@JacksonXmlRootElement(localName=“Cars”)
公车{
@JacksonXmlElementWrapper(useWrapping=false)
@JacksonXmlProperty(localName=“Car”)
私家车名单;
}
@资料
班车{
私人最终长id;
私人最终字符串制作;
私有最终字符串模型;
}
服务:

<Cars>
    <Car>
        <id>1</id>
        <make>Ford</make>
        <model>Fiesta</model>
    </Car>
    <Car>
        <id>2</id>
        <make>Ford</make>
        <model>Mustang</model>
    </Car>
    <Car>
        <id>3</id>
        <make>Ford</make>
        <model>GT40</model>
    </Car>
</Cars>
@服务
公营汽车服务{
公共汽车{
var cars=新车();
汽车(
名单(
新车(1辆,“福特”、“嘉年华”),
新车(2辆,“福特”、“野马”),
新车(3辆,“福特”,“GT40”))
);
返回车辆;
}
}
控制器:

<Cars>
    <Car>
        <id>1</id>
        <make>Ford</make>
        <model>Fiesta</model>
    </Car>
    <Car>
        <id>2</id>
        <make>Ford</make>
        <model>Mustang</model>
    </Car>
    <Car>
        <id>3</id>
        <make>Ford</make>
        <model>GT40</model>
    </Car>
</Cars>
@RestController
公共类汽车控制器
{
私人终审车服务;
公共车辆控制员(车辆服务)
{
this.carService=carService;
}
@GetMapping(value=“/cars”)
公共汽车
{
return carService.findAll();
}
}
输出:

<Cars>
    <Car>
        <id>1</id>
        <make>Ford</make>
        <model>Fiesta</model>
    </Car>
    <Car>
        <id>2</id>
        <make>Ford</make>
        <model>Mustang</model>
    </Car>
    <Car>
        <id>3</id>
        <make>Ford</make>
        <model>GT40</model>
    </Car>
</Cars>

1.
河流浅水处
嘉年华
2.
河流浅水处
野马
3.
河流浅水处
GT40

我已经使用了
@jacksonxmlementwrapper(useWrapping=false)
来防止汽车列表也被包装在一个元素中。

谢谢,这对我很有用。这是一种常见的模式吗?是的;jacksonxml和JAXB需要一个根元素。原因是有效的XML需要一个根元素来封装所有子元素。