【发布时间】:2020-02-06 21:07:10
【问题描述】:
我有一个想要使用 JAXB 转换为 POJO 的 XML,但我无法转换,并且父类中的所有元素都被填充为 null。
输入 XML:
<Response>
<parameters>
<Id>101</Id>
<Status>SUCCESS</Status>
</parameters>
</Response>
FileWriterService.writeMethod()
JAXBContext context = JAXBContext.newInstance(Response.class);
Response response = (Response) context.createUnmarshaller().unmarshal(new
StringReader(inputXml));
System.out.println("response: " + response);
输出:
response: ClassPojo [parameters = ClassPojo [Id = null, Status = null]]
Response.java
@XmlRootElement(name="Response")
public class Response {
private Parameters parameters;
public Parameters getParameters() {
return parameters;
}
public void setParameters(Parameters parameters) {
this.parameters = parameters;
}
@Override
public String toString() {
return "ClassPojo [parameters = " + parameters + "]";
}
}
Parameters.java
public class Parameters {
private String Id;
private String Status;
public String getId() {
return Id;
}
public void setId(String Id) {
this.Id = Id;
}
public String getStatus() {
return Status;
}
public void setStatus(String Status) {
this.Status = Status;
}
@Override
public String toString() {
return "ClassPojo [Id = " + Id + ", Status = " + Status + "]";
}
}
【问题讨论】:
-
尝试使用
@XmlAttribute(name = "Id") private String id;和状态@XmlAttribute(name = "Status") private String status;相同,因为jaxb 使用getter setter 方法。 -
与您的问题无关,但仍然很重要;不要在每次方法调用时都创建一个新的 JAXBContext,因为它会创建一个 memory leak。