Java @XML/REST Spring Web服务中未考虑XmlElementWrapper

Java @XML/REST Spring Web服务中未考虑XmlElementWrapper,java,xml,spring,spring-mvc,spring-boot,Java,Xml,Spring,Spring Mvc,Spring Boot,我想为xml根元素和列表元素提供自定义名称。 但是注释不起作用 @XmlRootElement(name = "test") @XmlAccessorType(XmlAccessType.FIELD) public class TestRsp { @XmlElementWrapper(name = "persons") @XmlElement(name = "pax") private List<Person> persons; } public class

我想为xml根元素和列表元素提供自定义名称。 但是注释不起作用

@XmlRootElement(name = "test")
@XmlAccessorType(XmlAccessType.FIELD)
public class TestRsp {
    @XmlElementWrapper(name = "persons")
    @XmlElement(name = "pax")
    private List<Person> persons;
}

public class Person {
   private String name;
   private String age;
}
结果:

<TestRsp> <!-- should be named "test" -->
   <persons>
     <persons> <!-- should be named "pax" -->
       <name />
       <age />
     </persons>
     <persons>
        //...
     </persons>
   </persons>
</TestRsp>

//...

因此,我的xml注释不会被拾取。但是为什么呢?

尝试使用
@JsonProperty
注释

它应该看起来像这样:

@JsonProperty("test")
编辑1:

尝试注释要更改的字段的getter,如下所示:

@XmlElement(name="someName")
编辑2:

@XmlRootElement(name="persons")
public class Root {


    private List<String> someList;


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

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

    public Root(String numValue,List<String> someListValue) {
        this();
        this.number = numValue;
        this.someList = someListValue;  
    }

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

尝试使用
@JsonProperty
注释

它应该看起来像这样:

@JsonProperty("test")
编辑1:

尝试注释要更改的字段的getter,如下所示:

@XmlElement(name="someName")
编辑2:

@XmlRootElement(name="persons")
public class Root {


    private List<String> someList;


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

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

    public Root(String numValue,List<String> someListValue) {
        this();
        this.number = numValue;
        this.someList = someListValue;  
    }

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

结果我不得不使用
@JacksonXml*
注释:

@JacksonXmlRootElement(localName = "test")
public class TestRsp {
    @JacksonXmlElementWrapper(localName = "persons")
    @JacksonXmlProperty(localName = "pax")
    @JsonProperty(name = "persons")
    private List<Person> persons;
}
@JacksonXmlRootElement(localName=“test”)
公共类TestRsp{
@JacksonXmlElementWrapper(localName=“persons”)
@JacksonXmlProperty(localName=“pax”)
@JsonProperty(name=“persons”)
私人名单人员;
}

结果我不得不使用
@JacksonXml*
注释:

@JacksonXmlRootElement(localName = "test")
public class TestRsp {
    @JacksonXmlElementWrapper(localName = "persons")
    @JacksonXmlProperty(localName = "pax")
    @JsonProperty(name = "persons")
    private List<Person> persons;
}
@JacksonXmlRootElement(localName=“test”)
公共类TestRsp{
@JacksonXmlElementWrapper(localName=“persons”)
@JacksonXmlProperty(localName=“pax”)
@JsonProperty(name=“persons”)
私人名单人员;
}

奇怪,这会创建嵌套列表
。为什么?因为我想输出xml。更重要的是:我如何命名列表包装器元素,使其与元素本身不同(类似于
@xmlementwrapper
注释)?
@JsonPRoperty
仅用于属性,而不用于注释类,这就是为什么我认为它的行为如此奇怪(嵌套列表)。因此,它将使用名为param的
pax
解决这个问题。我只是在类级别上检查解决方案。但是
@JsonProperty
重命名包装器元素和列表元素本身。我怎样才能独立命名它们呢?嗯,你能试试编辑1吗?同时编辑2和编辑3,希望它们能有所帮助。祝你好运。奇怪的是,这会创建嵌套列表
。为什么?因为我想输出xml。更重要的是:我如何命名列表包装器元素,使其与元素本身不同(类似于
@xmlementwrapper
注释)?
@JsonPRoperty
仅用于属性,而不用于注释类,这就是为什么我认为它的行为如此奇怪(嵌套列表)。因此,它将使用名为param的
pax
解决这个问题。我只是在类级别上检查解决方案。但是
@JsonProperty
重命名包装器元素和列表元素本身。我怎样才能独立命名它们呢?嗯,你能试试编辑1吗?同时编辑2和编辑3,希望它们能有所帮助。祝你好运