我想为XML root元素提供自定义名称并列出元素。但是注释不起作用。
@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注释没有被捡起。但是为什么?
尝试使用@JsonProperty
注释。
看起来应该像thit:
@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
结果我必须使用@JacksonXml*
注释:
@JacksonXmlRootElement(localName = "test")
public class TestRsp {
@JacksonXmlElementWrapper(localName = "persons")
@JacksonXmlProperty(localName = "pax")
@JsonProperty(name = "persons")
private List<Person> persons;
}