在spring boot中格式化xml输出

时间:2017-06-06 09:00:27

标签: xml spring-boot jaxb jersey

我有一个简单的终点如下:

curl -i -H "Accept: application/xml" localhost:8080/foo

当我使用curl向此端点发送请求时,如下所示:

<Foos>
 <item>
   <name>bar</name>
 </item>
 <item>
   <name>baz</name>
 </item>
 <item>
   <name>bat</name>
</item>
</Foos>

输出如下:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Foo {

private String name;

public Foo() {
}

public Foo(String name) {
    this.name = name;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}
}

有没有办法指示spring boot将项目更改为Foo类的名称?

这是Foo类:

<Foos>
<Foo>
  <name>bar</name>
</Foo>
<Foo>
  <name>baz</name>
</Foo>
<Foo>
  <name>bat</name>
</Foo>

Jersey为相同的端点和类输出所需的格式(Foo而不是item)。如何在不更改Foo类的情况下在spring mvn中实现这一点?

这是所需的xml输出:

{{1}}

所以基本上我希望能够在不修改Foo类的情况下控制元素的名称。

1 个答案:

答案 0 :(得分:0)

也许试试:

 @XmlRootElement(name="Foos")
    public class GetFooResponse{


        private List<Foo> someList;


        @XmlElement(name="Foo")
        public List<Foo> getSomeList() {
            return someList;
        }

        public void setSomeList(List<Foo> someList) {
            this.someList = someList;
        } 

        public GetResponse(List<Foo> someListValue) {
            this();
            this.someList = someListValue;  
        }

        /**
         * 
         */
        public GetResponse() {
            // TODO Auto-generated constructor stub
        }
    } 

这可能会生成您想要的输出。您必须从Foo[] - &gt;替换方法的返回类型。 GetFooResponse