我从某些端点收到一些 XML。每个响应的基本结构都是相似的(我得到的是 XML,没有 xsd):
<RESPONSE>
<INFO>
<ret_code>0</ret_code>
</details>
</INFO>
<CONTENT>
<name>John</name>
<addresses>
<address>
<city>NewYork</city>
<street>5th</street>
</address>
<address>
<city>Paris</city>
<street>Colombe</street>
</address>
</addresses>
</CONTENT>
</RESPONSE>
<RESPONSE>
<INFO>
<ret_code>1</ret_code>
<details>no salary data</details>
</INFO>
</RESPONSE>
或有效的数据回复
<RESPONSE>
<INFO>
<ret_code>0</ret_code>
</details>
</INFO>
<CONTENT>
<name>John</name>
<salary>1000</salary>
</CONTENT>
</RESPONSE>
如您所见,
所以我想(使用 JaxB)将这些映射到一些 POJO,如下所示:
@XmlRootElement(name="INFO")
public class INFO {
@XmlElement
public String ret_code;
@XmlElement
public String details;
}
也是地址类
@XmlRootElement(name = "address")
public class ADDRESS{
@XmlElement
public String city;
@XmlElement
public String street;
}
@XmlRootElement(name="RESPONSE")
public class Response extends INFO{
@XmlElement(name="name")
public String name;
@XmlWrapperElement(name="addresses")
@XmlElement(name="address")
public List<Address> addresses;
}
2.1.) 没有继承的 EndpointAddress 变化
@XmlRootElement(name="RESPONSE")
public class Response {
@XmlElement(name="INFO")
public INFO info;
@XmlElement(name="name")
public String name;
@XmlWrapperElement(name="addresses")
@XmlElement(name="address")
public List<Address> addresses;
}
@XmlRootElement(name="RESPONSE")
public class Response extends INFO{
@XmlElement(name="salary")
public String salary;
}
此时映射返回:
ClassCastException 在使用继承时尝试将 INFO 映射到 Response
Info信息的空值,没有继承时的地址。
任何关于如何实现某些可重用性的帮助都将非常受欢迎。
谢谢!