我想为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;
}
用法:
@RestController
public class MyServlet {
@RequestMapping("/test")
public TestRsp test() {
//...
return rsp;
}
}
结果:
<TestRsp> <!-- should be named "test" -->
<persons>
<persons> <!-- should be named "pax" -->
<name />
<age />
</persons>
<persons>
//...
</persons>
</persons>
</TestRsp>
所以我的xml注释没有被选中。但为什么呢?
答案 0 :(得分:0)
尝试使用@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
}
}
也许这会提供:
<persons>
<pax>FOO</pax>
<pax>BAR</pax>
</persons>
编辑3:
也许如果您想让解决方案正常工作,您需要在模型类中添加一个名为 jaxb.properties 的文件,其中包含以下条目:
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
答案 1 :(得分:0)
事实证明我必须使用@JacksonXml*
注释:
@JacksonXmlRootElement(localName = "test")
public class TestRsp {
@JacksonXmlElementWrapper(localName = "persons")
@JacksonXmlProperty(localName = "pax")
@JsonProperty(name = "persons")
private List<Person> persons;
}