JAXB是否可以处理多个问题;根“;元素?

JAXB是否可以处理多个问题;根“;元素?,jaxb,Jaxb,我有一个类似于下面的模式 <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="t1" type="t1Type"/> <xs:element name="t2" type="t2Type"/> <xs:element name="t3" type=

我有一个类似于下面的模式

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="t1" type="t1Type"/>
    <xs:element name="t2" type="t2Type"/>
    <xs:element name="t3" type="t3Type"/>
</xs:schema>

起初我认为这是一个无效的模式,但我在网上做的所有检查都验证了它。这意味着提供XML的人可以发送列出的任何(或所有)类型,并且仍然符合模式

我如何使用JAXB映射和解组所有不同的可能性


我不知道我会收到哪一个。

您需要利用一个用
@XmlRegistry
注释的工厂类(通常称为
ObjectFactory
)。该类将为每个可能的根元素(用
@xmlementdecl
注释)包含一个
create
方法。查看我写的这篇文章,了解更多细节和示例。

我是jaxb的新手。 我对jaxb有一个疑问

@XmlElementDecl(namespace = "http://mtop/nra/xsd/tca/v1", name = "thresholdCrossingAlert", substitutionHeadNamespace = "http://mtop/fmw/xsd/cei/v1", substitutionHeadName = "commoneventInformation")
这是我得到异常的注释

"java.security.PrivilegedActionException: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions" 
ThresholdCrossingAlert.class
正在扩展类
EventInformationType.class
EventInformationType.class
正在扩展类
CommonEventInformation.class
inturn


如果您知道接收到的是哪种类型,如果我不知道会发生什么,那么我的注释定义是否有问题,或者在初始化示例中的
JaxbContext

时是否有错误?我可以取回任何类型的数据。我如何解组?@Jackie-执行解组操作不需要知道对象的类型。如果您不知道要解组什么,则需要执行
getClass()
instanceof
来确定您拥有什么,然后才能对数据执行任何特定于类型的调用。