gpt4 book ai didi

java - JAXB 中的工厂方法访问元素?

转载 作者:行者123 更新时间:2023-11-29 05:49:31 27 4
gpt4 key购买 nike

我正在尝试为 JAXB 使用工厂方法而不是无参数构造函数。

我有多个继承自基类的类,关于哪个类将被实例化的唯一指示是 xml 元素中的属性 type

<tag-name type="boolean"/>

会实例化一个 BooleanType,而

<tag-name type="integer"/>

将实例化一个 IntegerType。

有什么方法可以从工厂方法中访问被解码的元素的元素名称/属性值?

(这可能是使用工厂方法优于无参数构造函数的好处吗?还有其他方法吗?)

(我没有使用 MOXy)

最佳答案

I have multiple classes that inherit from a base class, and the only indication as to which would be instantiated is an attribute type in the xml element.

使用任何JAXB (JSR-222)您可以使用 XmlAdapter 来映射继承关系,其中任意 XML 属性是继承指示符。

但是,我不会使用任意 XML 属性,而是使用 xsi:type 属性,以便 XML 模式可以正确验证内容。

如果您仍想使用任意 XML 属性并且您使用的是 EclipseLink MOXy是您的 JAXB 提供者,那么您可以利用 @XmlDescriminatorNode/@XmlDescriminatorValue 扩展:


Is there any way I can access the element name / attribute values of the element being unmarshalled from within the factory method?

JAXB 实现确实允许您通过 @XmlType 注释指定工厂类和方法,但我认为这不是您在此用例中寻找的东西。

要利用 XML 内容来确定要实例化的适当子类,您需要使用 XmlAdapter 方法。

关于java - JAXB 中的工厂方法访问元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14463423/

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