我想知道是否有任何方法可以解组包含固定元素名称的 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>
Run Code Online (Sandbox Code Playgroud)
案例#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>
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,包含类都是“响应”,具有 2 个实例变量:requestStatus(字符串)和接口(某些超类?)。我需要帮助的是如何使用正确的 JAXB 注释编写包含类“Response”,以便解组将为“接口”变量创建正确的类实例。
提前感谢一堆人的任何帮助。
注意:我是EclipseLink JAXB (MOXy) 的负责人,也是JAXB 2 (JSR-222)专家组的成员。
您可以使用 MOXy 的@XmlDescriminatorNode
/ @XmlDescriminatorValue
JAXB 扩展。
根据
@XmlDiscriminatorNode("@name")
public abstract class Base {
}
Run Code Online (Sandbox Code Playgroud)
人
@XmlDiscriminatorValue("person")
public class Person extends Base {
}
Run Code Online (Sandbox Code Playgroud)
车辆
@XmlDiscriminatorValue("vehicle")
public class Vehicle extends Base {
}
Run Code Online (Sandbox Code Playgroud)
了解更多信息
以下是使用旧版本 MOXy API 的类似问题的答案: