gpt4 book ai didi

java - JAXB : Unmarshall to different classes based on an element's attribute value

转载 作者:搜寻专家 更新时间:2023-11-01 02:52:50 26 4
gpt4 key购买 nike

我想知道是否有任何方法可以解码包含固定元素名称(其属性引用各种类)的 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>

在这两种情况下,包含类都是“response”,有 2 个实例变量:requestStatus (String) 和接口(interface)(某个父类(super class)?)。我需要帮助的是如何使用正确的 JAXB 注释编写包含类“Response”,以便解码将为“interface”变量创建正确的类实例。

提前感谢您的帮助。

最佳答案

注意:我是 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 的类似问题的回答:

关于java - JAXB : Unmarshall to different classes based on an element's attribute value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7949683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com