javajaxb创建空对象
我有一个基于XSD的XML。xsd是
<xs:complexType name="objectOneType" mixed="true">
<xs:sequence>
<xs:element ref="nestedObject" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="attribute" type="xs:string" use="optional"/>
</xs:complexType>
现在,当我收到这个XML
<xmlresponse>
<xmlrequest>
<objectone attribute="changed" />
</xmlrequest>
<xmlsrc>
<objectone attribute="changed" />
</xmlsrc>
</xmlresponse>
在此XML中,对象OBjECTONE没有名为NESTEDOBJECT的对象。现在,它不是忽略它,而是在OBJECTONE中插入一个空对象,该对象为字符串类型。因此,当我的代码试图处理OBJECTONE时,假设它有一个对象类型NESTEDOBJECT。它抛出classcast异常
有什么想法吗
附言:杀了我吧,因为我正在使用JAXB1.2
# 1 楼答案
关键是注释
mixed="true"
。使用此注释,结构如下这是可能的。JAXB在内部创建一个
List<Object> insideContent
,它将位于以下大写类中:String
、Italic
、String
、Underline
和String
。我假设您用类似Marshaller.JAXB_FORMATTED_OUTPUT
的东西输出XML,它为格式的输出插入了换行符和制表符。您可以:<content><italic>This</italic> is a <underline>test</underline></content>
不应具有前导或尾随String
mixed="true"
List<Object>
时,使用instanceOf
测试子类