我不能像这样解组通用类型。 我不喜欢用适配器类解决它。 有人可以帮忙..

interface Car {
}


class Car1 implements Car {
}

class Car2 implements Car {
}

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType( name = "", propOrder = { "car1" } )
@XmlRootElement(name = "Element")
class Element{

@XMLELEMENT(type="Car1.class" name="Car")
private Car car1;

}

#1楼 票数:0

如果您尝试解组的xml具有用于描述car1和car2的不同标签,则可以使用@XmlElements批注。

我在下面创建一个小例子来说明问题:

@XmlRootElement
public class SomeRoot {

    @XmlElements({
            @XmlElement(type = Car1.class, name = "car1"),
            @XmlElement(type = Car2.class, name = "car2")
    })
    private List<Car> cars;
}

然后你的界面:

public interface Car {
}

具有一些公共字段的基类:

@XmlAccessorType(XmlAccessType.FIELD)
public class BaseCar {

    private String type;
}

car1的实​​现:

@XmlAccessorType(XmlAccessType.FIELD)
public class Car1 extends BaseCar implements Car {
    private String car1SpecificField;

}

和car2:

@XmlAccessorType(XmlAccessType.FIELD)
public class Car2 extends BaseCar implements Car {
    private String car2SpecificField;
}

这样可以将XML解组为正常:

<someRoot>
    <car1>
        <type>some type</type>
        <car1SpecificField>some value</car1SpecificField>
    </car1>
    <car2>
        <type>other type</type>
        <car2SpecificField>other value</car2SpecificField>
    </car2>
</someRoot>

如果您的xml使用<car>而不是<car1><car2> ,则需要使用适配器,否则jaxb不知道要解组到哪个类。

  ask by steven translate from so

未解决问题?本站智能推荐:

2回复

JAXB解组无法正常工作

我已经建立了一个项目来测试另一个项目的编组。 编组工作。 我得到了正确的xml文件,但无法进行编组。 我只得到关系名称(字符串)。 缺少属性和功能依赖性。 编辑:这是源: 源代码 请看一下这些课程: 主要: 关系: 属性: FD: 出口:
2回复

JAXB 解组无法正常工作

我正在尝试使用JAXB将XML转换为 Object ,我的 XML 如下所示: 所以我创建了 3 个 java 类:EntityResource.java、Item.java 和 PermissionRecipient.java,如下所示: 实体资源.java 项目.java 权限接收
3回复

与JAXB解组

我需要将XML字符串解组到项目中已经存在的类中,但是我无法弄清楚如何将XML的特定部分解组到对象列表中。 让我用一些代码解释一下: 我有这个XML: 我有这些课程: 用户 @XmlAccessorType(XmlAccessType.FIELD) @XmlType(
1回复

当我无法访问解组器时,如何调试JAXB解组?

我遇到了JAXB解组的问题,我不知道如何解决。 它与解组SOAP头有关。 在我的SOAPHandler中 ,我有一个SOAPMessageContext对象,该对象具有getHeaders()方法。 此方法接受QName和JAXBContext作为参数,并将自动解组所有匹配的标头。
1回复

无法使用JAXB解组收到的请求

我定义了所有必需的元素,但是代码无法解析服务器响应。 我将@XmlSeeAlso({ Artist.class, Venue.class })更改为@XmlSeeAlso({Venue.class })但这没有帮助。 我还添加了package-info.java文件。 错误
1回复

无法使用JAXB类解组XML响应

例外情况: javax.xml.bind.UnmarshalException:意外元素(uri:“ http://www.cleartrip.com/hotel/hotel-search-response ”,本地:“ hotel-search-response”)。 预期元素为(无)
1回复

无法使用JAXB解组xml文件

我做了以下 我自己创建了一个XML文件。 使用在线工具将其转换为XSD 在我的项目中复制生成的POJO 并尝试使用JAXB解组器创建对象 步骤1:我创建的XML 步骤2:将其转换为XSD 步骤3:创建了以下POJO(删除了注释) 军
1回复

无法正确解组包含带有JAXB标签的XML文件?

我有一个xml文件,如下所示: fieldDelimiter包含一个选项卡。 当我调用Unmarshaller.unmarshal将此xml文件转换为对象时,选项卡被替换为空格。 我希望它保留为选项卡。 这是我有的Java代码: