Java Jackson FasterXML POJO到XML列表

Java Jackson FasterXML POJO到XML列表,java,xml,jackson,fasterxml,Java,Xml,Jackson,Fasterxml,我使用FasterXML Jackson实现将POJO转换为XML数据包的XML输出。我正在努力实现以下输出: <MyRequest> <MySubRequest>4</MySubRequest> <MySubRequest>5</MySubRequest> </MyRequest> 以及: @JacksonXmlRootElement 公共类MyRequest{ 私人收藏请求; 公共集合getRequests(){

我使用FasterXML Jackson实现将POJO转换为XML数据包的XML输出。我正在努力实现以下输出:

<MyRequest>
 <MySubRequest>4</MySubRequest>
 <MySubRequest>5</MySubRequest>
</MyRequest>
以及:

@JacksonXmlRootElement
公共类MyRequest{
私人收藏请求;
公共集合getRequests(){
返回MySubRequest;
}
公共无效设置请求(收集请求){
this.MySubRequest=请求;
}
}
我正在用以下方法进行测试:

ObjectMapper mapper = new XmlMapper();
MyRequest entity = new MyRequest();
Collection<MySubRequest> myIds = new ArrayList<>();
myIds.add(new MySubRequest("12"));
myIds.add(new MySubRequest("34"));
entity.setRequests(myIds);
mapper.writeValue(System.out, entity);
ObjectMapper-mapper=new-XmlMapper();
MyRequest实体=新的MyRequest();
集合myid=newarraylist();
添加(新的MySubRequest(“12”);
添加(新的MySubRequest(“34”);
实体设置请求(myid);
mapper.writeValue(System.out,entity);
但结果是:

<MyRequest xmlns="">
 <requests>
  <requests>12</requests>
  <requests>34</requests>
 </requests>
</MyRequest>

12
34

我想知道的另一件事是如何强制输出区分大小写,即大写变量名。

您可以使用
jacksonxmlementwrapper
注释忽略包装。就像这样使用它:

@JacksonXmlRootElement
class MyRequest {


    private Collection<MySubRequest> mySubRequest;

    public Collection<MySubRequest> getRequests() {
        return mySubRequest;
    }

    @JacksonXmlProperty(localName = "MySubRequest")
    @JacksonXmlElementWrapper(useWrapping = false)
    public void setRequests(Collection<MySubRequest> requests) {
        this.mySubRequest = requests;
    }

}
@JacksonXmlRootElement
类MyRequest{
私人收藏请求;
公共集合getRequests(){
返回mySubRequest;
}
@JacksonXmlProperty(localName=“MySubRequest”)
@JacksonXmlElementWrapper(useWrapping=false)
公共无效设置请求(收集请求){
this.mySubRequest=请求;
}
}
在这里,我使用了
JacksonXmlProperty
annotation在xml中使用元素名作为“MySubRequest”

<MyRequest xmlns="">
 <requests>
  <requests>12</requests>
  <requests>34</requests>
 </requests>
</MyRequest>
@JacksonXmlRootElement
class MyRequest {


    private Collection<MySubRequest> mySubRequest;

    public Collection<MySubRequest> getRequests() {
        return mySubRequest;
    }

    @JacksonXmlProperty(localName = "MySubRequest")
    @JacksonXmlElementWrapper(useWrapping = false)
    public void setRequests(Collection<MySubRequest> requests) {
        this.mySubRequest = requests;
    }

}