我有一个类似于以下的架构...
<?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进行映射和解组所有不同的可能性?
我不知道我会收到哪一个。
答案 0 :(得分:4)
您需要利用注释为@XmlRegistry
的工厂类(通常称为ObjectFactory
)。对于使用create
注释的每个可能的根元素,该类将包含@XmlElementDecl
方法。
示例强>
答案 1 :(得分:0)
我是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
。
在初始化JaxbContext
时,我的注释定义或错误是否有任何问题。