我想知道是否有任何方法可以解组包含固定元素名称的XML,其属性引用各种类。请考虑以下XML:
案例#1:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<request-status>valid</request-status>
<interface name="person">
<f-name>Joe</f-name>
<l-name>Blow</l-name>
<age>25</age>
<email>joe.blow@email.com</email>
</interface>
</response>
案例#2:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<request-status>valid</request-status>
<interface name="vehicle">
<make>Ford</make>
<type>truck</type>
<year>1989</year>
<model>F150</model>
</interface>
</response>
在这两种情况下,包含类都是“响应”,有2个实例变量:requestStatus(String)和interface(某些超类?)。我需要帮助的是如何使用正确的JAXB注释编写包含类“Response”,以便unmarshall将为“interface”变量创建正确的类实例。
提前感谢一大堆帮助。
答案 0 :(得分:3)
注意:我是EclipseLink JAXB (MOXy)主管,是JAXB 2 (JSR-222)专家组的成员。
您可以使用MOXy的@XmlDescriminatorNode
/ @XmlDescriminatorValue
JAXB扩展程序。
基础
@XmlDiscriminatorNode("@name")
public abstract class Base {
}
<强>人强>
@XmlDiscriminatorValue("person")
public class Person extends Base {
}
<强>车辆强>
@XmlDiscriminatorValue("vehicle")
public class Vehicle extends Base {
}
了解更多信息
以下是使用旧版MOXy API的类似问题的答案: